#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10,P=10003,p=233;
string s1,s2;
int n,m,a[N],b[N],c[N];
int f(int k){
int l=0,r=k-1;
while(l<r){
int mid=(l+r+1>>1);
if(b[mid]!=(b[k]-b[k-mid]*c[mid]%P+P)%P) r=mid-1;
else l=mid;
}
return l;
}
int main(){
cin>>s1>>s2;
n=s1.size(),m=s2.size();
s1=' '+s1,s2=' '+s2;
c[0]=1;
for(int i=1;i<=m;i++) c[i]=c[i-1]*p%P;
for(int i=1;i<=m;i++) b[i]=(b[i-1]*p+s2[i])%P;
for(int i=1;i<=n;i++){
a[i]=(a[i-1]*p+s1[i])%P;
if(i>=m&&(a[i]-a[i-m]*c[m]%P+P)%P==b[m]) cout<<i-m+1<<'\n';
}
for(int i=1;i<=m;i++) cout<<f(i)<<' ';
return 0;
}