#include<bits/stdc++.h>
using namespace std;
#define MAXN 1000010
char a[MAXN],b[MAXN];
int next1[MAXN];
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int main()
{
cin>>a+1;
cin>>b+1;
int a1=strlen(a+1);
int b1=strlen(b+1);
for(int i=2;i<=b1;i++)
{
int u=i;
while(next1[u-1]!=0)
{
if(b[next1[u-1]+1]==b[i])
{
next1[i]=max(next1[i],next1[u-1]+1);
}
u=next1[u-1]+1;
}
if(next1[i]==0)
{
if(b[i]==b[1])
{
next1[i]++;
}
}
}
int j=1,i=1;
for(i=1;i<=a1;i++)
{
if(a[i]!=b[j]&&j>1)
{
j=next1[j-1]+1;
}
if(j==b1)
{
cout<<i-j+1<<endl;
j=next1[j];
}
j++;
}
for(i=1;i<=b1;i++)
{
cout<<next1[i]<<" ";
}
return 0;
}