#include <cstring>
#include <iostream>
#define maxn 1000010
using namespace std;
int la, lb, j, Next[maxn];
char a[maxn], b[maxn];
void getNext() {
j = 0;
for (int i = 2; i <= lb; i++) {
while (j && b[i] != b[j + 1])
j = Next[j];
if (b[i] == b[j + 1])
j++;
Next[i] = j;
}
}
void KMP() {
getNext();
j = 0;
for (int i = 1; i <= la; i++){
while(j&&a[i]!=b[j+1])
j=Next[j];
if(a[i]==b[j+1])
j++;
if(j==lb){
cout<<i+1-lb<<endl;
j=Next[j];
}
}
}
int main() {
cin>>(a+1);
cin>>(b+1);
la=strlen(a+1);
lb=strlen(b+1);
KMP();
for(int i=1;i<=lb;i++)
cout<<Next[i]<<" ";
cout<<endl;
return 0;
}