#include <iostream>
#include <string>
#define MAXN 1100100
using namespace std;
void get_next(string p,int* next)
{
next[0]=0;
for(int i=1,m=0;i<p.length();i++)
{
while(m>0&&p[i]!=p[m])
{
m=next[m-1];
}
if(p[i]==p[m])
{
m++;
}
next[i]=m;
}
}
int kmp(string s,string p,int* next)
{
int i,j;
get_next(p,next);
for(i=0,j=0;i<s.size();i++)
{
while(j>0&&s[i]!=p[j])
{
j=next[j-1];
}
if(s[i]==p[j])
{
j++;
}
if(j==p.size())
{
cout<<i-j+2<<endl;
i=i-j+2;
j=next[j-1];
}
}
return -1;
}
int main()
{
int next[MAXN];
string s1,s2;
cin>>s1;
cin>>s2;
while(kmp(s1, s2,next)!=-1);
for(int i=0;i<s2.size();i++)
{
cout<<next[i]<<" ";
}
}