#include <bits/stdc++.h>
using namespace std;
char a[1000005], b[1000005];
int nexts[1000005],ans[1000005];
int main() {
int cnt = 0;
scanf("%s", a+1);
scanf("%s", b+1);
int blen = strlen(b+1),alen = strlen(a+1);
nexts[1] = 0;
int ll = 1, matchnum = 0;
for(int i = 2; i <= blen; i++) {
while(matchnum > 0 && b[ll] != b[i]) matchnum = nexts[matchnum];
if(b[ll] == b[i]) matchnum++;
//matchnum++;
nexts[i] = matchnum;
}
int mnum = 0;
for(int i = 1; i <= alen; i++) {
while(mnum > 0 && (b[mnum+1] != a[i] || mnum == blen)) {
mnum = nexts[mnum];
}
if(b[mnum+1] == a[i]) mnum++;
if(mnum == blen) {cnt++;ans[cnt] = i-blen+1;}
//if(a[pot] == b[i]) {mnum++;pot++;}
}
for(int i = 1; i <= cnt; i++) printf("%d\n", ans[i]);
for(int i = 1; i <= blen; i++) printf("%d ", nexts[i]);
return 0;
}