#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int N =1000010;
int lens,lenss,nxt[N];
char s[N],ss[N];//s文本串(长串) ss模式串(短串)
inline void getnxt(){
int k=0;
for(int i=1;i<lenss;++i){
while(k && ss[k]!=ss[i]) k=nxt[k];
if(ss[k]==ss[i]) ++k;
nxt[i+1]=k;
}
}
inline void kmp(){
getnxt();
int k=0;
for(int i=0;i<=lens;++i){
while(k && ss[k]!=s[i]) k=nxt[k];
if(ss[k]==s[i]) ++k;
if(k==lenss){
printf("%d\n",i-lenss+2);
k=nxt[k];
}
}
}
int main(){
scanf("%s %s",s,ss);
lens=strlen(s);lenss=strlen(ss);
kmp();
for(int i=1;i<=lenss;++i) printf("%d ",nxt[i]);
return 0;
}