#include<bits/stdc++.h>
using namespace std;
char s1[1000005],s2[1000005];
int next1[1000005],ans=0,len1,len2;
void qzhz(){
}
int main(){
cin>>s1+1>>s2+1;
len1=strlen(s1+1),len2=strlen(s2+1);
int i=1,j=0;
next1[1]=0;
//cout<<len2;
while(i<=len2){
if(j==0||s2[i]==s2[j]){
i++;
j++;
next1[i]=j;
//cout<<i<<' '<<j<<" ";
}
else{
j=next1[j];
}
}
//for(int i=1;i<=s2.length()+1;i++)cout<<next1[i]<<" ";
for(int i=1;i<=len1;i++){
//cout<<"i="<<i<<" ";
int j=1;
if(s1[i]==s2[j]){
for(j;j<=len2;){
if(s1[i]!=s2[j])break;
j++,i++;
}
if(j==len2+1)cout<<i-j+1<<endl;
i-=next1[j];
}
}
for(int i=2;i<=len2+1;i++){
cout<<next1[i]-1<<" ";
}
}
sub2两个点一个1.10s,一个1.01sTLE 求改