#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
string s1,s2;
int len1,len2;
int nxt[N];
void _next(){
nxt[1]=0;
for(int now=2;now<=len2;now++){
if(s2[now]==s2[nxt[now-1]+1]){
nxt[now]=nxt[now-1]+1;
}else{
if(nxt[nxt[now-1]]!=0){
if(s2[nxt[now-1]+1]==s2[now]){
nxt[now]=nxt[nxt[now-1]]+1;
}else{
nxt[now]=0;
}
}
}
}
}
void kmp(){
int i=1,j=1;
while(i<=len1){
if(s1[i]==s2[j]){
i++,j++;
}
else if(j>1){
j=nxt[j-1];
}else{
i++;
}
if(j>len2){
cout<<i-len2<<endl;
j=nxt[j-1];
i--;
}
}
}
int main(){
cin>>s1>>s2;
len1=s1.length();
len2=s2.length();
for(int i=len1;i>=1;i--) s1[i]=s1[i-1];
for(int i=len2;i>=1;i--) s2[i]=s2[i-1];
_next();
kmp();
for(int i=1;i<=len2;i++) cout<<nxt[i]<<" ";
return 0;
}