

#include<iostream>
#include<cstdio>
#include<string.h>
const int N=1000100;
using namespace std;
int main(){
char s[N],p[N];
int ne[N];
scanf("%s",s+1);
scanf("%s",p+1);
int j=0;
long long lenp=strlen(p+1);
long long lens=strlen(s+1);
for(int i=2;i<=lenp;i++){
while(j&&p[i]!=p[j+1])j=ne[j];
if(p[i]==p[j+1])j++;
ne[i]=j;
}
for(int i=1,j=0;i<=lens;i++){
while(j&&s[i]!=p[j+1])j=ne[j];
if(s[i]==p[j+1])j++;
if(j==lenp)
{
printf("%d\n",i-lenp+1);
j=ne[j];
}
}
for(int i=1;i<=strlen(p+1);i++)printf("%d ",ne[i]);
return 0;
}
strlen速度是On 不提前定义会TLE