#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e7+5;
int n,m,v[N],p=1,r=-1,ans;
char a[N],b[N];
signed main()
{
// freopen("k.in","r",stdin);
// freopen("WA.out","w",stdout);
cin>>a+1>>b+1;
n=strlen(b+1);m=strlen(a+1);
a[0]=b[0]=']';a[m+1]=b[n+1]='[';
for(int i=1;i<=n;i++)
{
int q=i-p+1;
if(i<=r)v[i]=min(v[q],r-i+1);v[i]++;
while(b[v[i]]==b[v[i]+i-1]&&v[i]+i-1<=n&&v[i]<=n)v[i]++;v[i]--;
if(i+v[i]-1>r)r=v[i]+i-1,p=i;
}
for(int i=1;i<=n;i++)
{
// cout<<v[i]<<" ";
int po=i*(v[i]+1);
ans^=po;
}
cout<<ans<<endl;
ans=0;r=-1;p=1;
memset(v,0,sizeof(v));
for(int i=1;i<=m;i++)
{
int q=i-p+1;
if(i<=r)v[i]=min(v[q],r-i+1);v[i]++;
while(b[v[i]]==a[v[i]+i-1]&&v[i]+i-1<=m&&v[i]<=n)v[i]++;v[i]--;
if(i+v[i]>r)r=v[i]+i,p=i;
}
for(int i=1;i<=m;i++)
{
cout<<v[i]<<" ";
int po=i*(v[i]+1);
ans^=po;
}
cout<<ans;
return 0;
}