kmp
#include<bits/stdc++.h>
#include<string>
using namespace std;
const int N=1000001;
int nex[N];
char a[N],b[N];//a使文本串,b使模式串
int lena,lenb;
void get_nex() {
int j=0;
for(int i=2; i<=lenb; ++i) {
while(j && b[i]!=b[j+1]) j=nex[j];
if(b[j+1]==b[i]) j++;
nex[i]=j;
}
}
void kmp() {
int j=0;
for(int i=1; i<=lena; ++i) {
while(j && b[j+1]!=a[i]) j=nex[j];
if(b[j+1]==a[i]) j++;
if(j==lenb) {
cout<<i-lenb+1<<'\n';
j=nex[j];
}
}
}
int main() {
cin>>a+1>>b+1;
lena=strlen(a+1),lenb=strlen(b+1);
get_nex();
kmp();
for(int i=1; i<=lenb; ++i) cout<<nex[i]<<" ";
return 0;
}