#include<bits/stdc++.h>
#define MAXN 1000001
using namespace std;
char s1[MAXN],s2[MAXN];
int nxt[MAXN];
int main(){
scanf("%s %s",s1+1,s2+1);
int len1=strlen(s1+1);
int len2=strlen(s2+1);
while(!isupper(s1[len1])){
s1[len1]='\0';
--len1;
}
while(!isupper(s2[len2])){
s2[len2]='\0';
--len2;
}
int pos=0;
for(int i=2;i<=len2;++i){
while(pos&&s2[i]!=s2[pos+1]){
}
pos=nxt[pos];
if(s2[i]==s2[pos+1]){
++pos;
}
nxt[i]=pos;
}
pos=0;
for(int i=1;i<=len1;++i){
while(pos&&s1[i]!=s2[pos+1]){
pos=nxt[pos];
}
if(s1[i]==s2[pos+1]){
++pos;
}
if(pos==len2){
printf("%d\n",i-len2+1);
}
}
for(int i=1;i<=len2;++i){
printf("%d ",nxt[i]);
}
return 0;
}