rt,
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
int nxt[1919810],N[1919810];
void getnxt(const string& s,int* _nxt){
memset(_nxt,0,sizeof _nxt);
_nxt[0]=-1;
int k=-1;
for(int i=1;i<s.size();i++){
while((~k)&&s[i]!=s[k+1])k=_nxt[k];
if(s[i]==s[k+1])k++;
_nxt[i]=k;
}
}
vector<int> kmp(const string& s,const string& t){
vector<int> pos;
getnxt(t,nxt);
int j=0,n=s.size(),m=t.size();
for(int i=0;i<n;i++){
while(~j&&t[j+1]!=s[i])j=nxt[j];
j++;
if(t[j+1]==s[i])j++;
else if(j==m-1)pos.emplace_back(i-j+1);
}
return pos;
}
void solve(){
string a,b;
cin>>a>>b;
auto ans=kmp(a,b);
for(auto &i:ans)cout<<i<<"\n";
for(int i=1;i<=b.size();i++)cout<<nxt[i]<<" ";
}
int main() {
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
solve();
return 0;
}