#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
using namespace std;
char a[1000010],b[1000010];
int net[1000010];
void nex(){
net[1] = 0;
int i = 1,j = 0;
while(i <= strlen(b+1)){
if(j == 0 || b[i] == b[j])net[++i] = ++j;
else j = net[j];
}
}
int main(){
scanf("%s%s",a+1,b+1);
nex();
int j = 1;
for(int i = 1;i <= strlen(a+1);i++){
while(j != 1 && a[i] != b[j])j = net[j];
if(a[i] == b[j])j++;
if(j == strlen(b+1)+1){
printf("%d\n",i-j+2);
j = net[j];
}
}
printf("0 ");
for(int i = 2;i <= strlen(b+1);i++)printf("%d ",net[i+1]-1);
printf("\n");
return 0;
}