#include <stdio.h>
#include <string.h>
#define Arrsize 1000000
void getNext(int Next[Arrsize], char s2[Arrsize]);
char s1[Arrsize];
char s2[Arrsize];
int Next[Arrsize];
int main() {
scanf (" %s", s1 );
scanf (" %s", s2 );
getNext(Next, s2);
int is1 = 0;
int js2 = 0;
while (is1 <= strlen(s1) - 1) {
if (s1[is1] == s2[js2]) {
int i = is1;
int j = js2;
while (s1[i] == s2[j]) {
if (j == strlen(s2) - 1 + js2) {
printf("%d\n", is1 + 1);
break;
}
if (s1[i] != s2[j]) {
break;
}
i++;
j++;
}
is1++;
}
else if (js2 == 0) {
is1++;
}
else {
js2 = Next[js2 - 1];
}
}
for (int i = 0; i<=strlen(s2)-1; i++) {
printf("%d ", Next[i]);
}
return 0;
}
void getNext(int Next[Arrsize], char s2[Arrsize]) {
int pre = 0;
int last=1;
Next[pre] = 0;
while (last <= strlen(s2) - 1) {
if (s2[pre] == s2[last]) {
Next[last++] = ++pre;
}
else if (pre == 0) {
Next[last] = 0;
last++;
}
else {
pre = Next[pre - 1];
}
}
}