#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char a[1000006];
char b[1000006];
int next[1000005];
int temp[10000];
void getnext(char a[],int n) { //n--length
int i=0;
int k=-1;
next[0]=-1;
while(i<n) {
if(k==-1||a[i]==a[k]) {
i++;
k++;
next[i]=k;
} else
k=next[k];//back
}
}
int main() {
gets(a);
gets(b);
char *p,*r;
r=a;
int len1,len2;
len1=strlen(a);
len2=strlen(b);
getnext(b,len2);
int cnt=0;
while((p=strstr(r,b))!=NULL) {
temp[cnt]=p-r+1;
if(cnt>0)
temp[cnt]+=temp[cnt-1];
cnt++;
r=p+1;
}
int i=0;
while(i<cnt) {
printf("%d\n",temp[i]);
i++;
}
for(int i=1; i<=len2; i++) {
printf("%d",next[i]);
if(i!=len2)
printf(" ");
}
}