#include <bits/stdc++.h>
#define ll long long
#define H 19260817
#define rint register int
#define For(i,l,r) for(rint i=l;i<=r;++i)
#define FOR(i,r,l) for(rint i=r;i>=l;--i)
#define MOD 1000003
#define mod 1000000007
using namespace std;
inline int read() {
rint x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
void print(int x){
if(x<0){putchar('-');x=-x;}
if(x>9){print(x/10);putchar(x%10+'0');}
else putchar(x+'0');
return;
}
const int N = 1e6 + 10;
int nx[N], len1, len2;
char t[N], p[N];
signed main() {
cin >> t >> p;
len1 = strlen(t), len2 = strlen(p);
int i = 1, j = 0;
while(i < len2) {
if(p[i] == p[j]) {
j++;
nx[i] = j;
i++;
} else {
if(j == 0) nx[i] = 0, i++;
else {
j = nx[j - 1];
}
}
}
i = 0, j = 0;
while(i < len1) {
if(t[i] == p[j]) {
i++, j++;
} else {
if(j == 0) {
i++;
} else {
j = nx[j - 1];
}
}
if(j == len2 - 1) {
cout << i - j + 1 << '\n';
}
}
For(i,1,len2) cout << nx[i] << ' ';
cout << '\n';
return 0;
}