#include<iostream>
#include<cstring>
using namespace std;
char s1[1919810],s2[1919810];
int nxt[1919810]={0};
int len,l1;
void build_nxt(){
int prefix_len=0,i;
len=strlen(s2)-1;
for(i=1;i<len;){
if(s2[prefix_len]==s2[i]){
++prefix_len;
nxt[i]=prefix_len;
++i;
}else if(prefix_len==0){
nxt[i]=0;
++i;
}else{
prefix_len=nxt[prefix_len-1];
}
}
}
int kmp_search(){
int i=0,j=0;
while(i<l1){
if(s1[i]==s2[j]){
++i;
++j;
}else if(j>0) j=nxt[j-1];
else ++i;
if(j==len) cout<<i-j+1<<endl;;
}
}
int main(){
ios::sync_with_stdio(0);
fgets(s1,1000050,stdin);
fgets(s2,1000050,stdin);
l1=strlen(s1)-1;
build_nxt();
kmp_search();
for(int i=0;i<len;++i){
cout<<nxt[i]<<' ';
}
return 0;
}