#include<cstdio>
#include<cstring>
int nxt[100001];
char s[1000003],t[1000003];
int main(){
	scanf("%s%s",s,t);
	int len1=strlen(s),len2=strlen(t);
	for(int i=1,j=0;i<len2;i++){
		while(j&&t[i]!=t[j])j=nxt[j-1];
		if(t[j]==t[i])j++;
		nxt[i]=j;
	}
	for(int i=0,j=0;i<len1;i++){
		while(j&&t[j]!=s[i])j=nxt[j-1];
		if(t[j]==s[i])j++;
		if(j==len2)printf("%d\n",i-len2+2),j=nxt[j-1];
	}
	for(int i=0;i<len2;i++)printf("%d ",nxt[i]);
}
//对应洛谷 P3375 【模板】KMP