#include <bits/stdc++.h>
using namespace std;
#define maxn 1000010
#define maxm 1000010
int n,m,f[maxn],ans[maxn],cnt=0;
char s1[maxn],s2[maxm];
inline void init_() {
freopen("a.txt","r",stdin);
}
inline void first_() {
int i=0,j=-1;
while(i<m) {
if(j==-1||s2[i]==s2[j]) {
++i;++j;
f[i]=j;
}
else j=f[j];
}
}
inline void KMP_() {
int i=0,j=0;
while(i<n) {
if(j==-1||s1[i]==s2[j]) ++i,++j;
else j=f[j];
if(j==m) {
ans[++cnt]=i-m+1;
j=f[j];
}
}
}
void readda_() {
scanf("%s",s1);
scanf("%s",s2);
n=strlen(s1);
m=strlen(s2);
f[0]=-1;
first_();
KMP_();
for(int i=1;i<=cnt;++i) {
printf("%d\n",ans[i]);
}
for(int i=1;i<=m;++i) {
printf("%d ",f[i]);
}
}
int main() {
init_();
readda_();
return 0;
}