#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1e6+9;
int n,m;
int next[MAX_N];
void makenext(string a)
{
int temp;
next[0]=-1;
for(int i=1;i<=m;i++)
{
temp=next[i-1];
while(temp>=0&&a[temp+1]!=a[i])
{
temp=next[temp];
}
if(a[temp+1]==a[i])
{
next[i]=temp+1;
}
else
{
next[i]=-1;
}
}
return ;
}
void kmp(string s,string p)
{
int i,j;
if(m>n) return ;
makenext(p);
while(i<=n&&j<=m)
{
if(j==m&&s[i]==p[j])
{
printf("%d\n",i-m+1);
i=i-m+1;
j=0;
}
if(s[i]==p[j])
{
i++,j++;
}
else if(j>0)
{
j=next[j-1]+1;
}
else
{
i++;
}
}
return ;
}
int main()
{
string s,p;
cin>>s;
cin>>p;
n=s.length()-1;
m=p.length()-1;
kmp(s,p);
for(int i=0;i<=m;i++)
{
printf("%d ",next[i]+1);
}
return 0;
}