QwQ
#include<bits/stdc++.h>
using namespace std;
const int S=2e7+10;
long long la,lb,nxt[S],ext[S];
char a[S],b[S];
long long ans;
void add(char *x){
int l=strlen(x),p=0,k=1;
nxt[0]=l;
while(p+1<l && x[p]==x[p+1]) p++;
nxt[1]=p;
for(int i=2;i<l;i++){
p=k+nxt[k]-1;
if(i+nxt[i-k]<=p) nxt[i]=nxt[i-k];
else{
int j=max(0,p-i+1);
while(i+j<l && x[i+j]==x[j]) j++;
nxt[i]=j,k=i;
}
}
}
int find(char *x,char *y){
int lx=strlen(x),ly=strlen(y),p=0,k=1;
while(p<lx && p<ly && x[p]==y[p]) p++;
ext[0]=p;
for(int i=1;i<lx;i++){
p=k+ext[k]-1;
if(i+nxt[i-k]<=p) ext[i]=nxt[i-k];
else{
int j=max(0,p-i+1);
while(i+j<lx && j<ly && x[i+j]==y[j]) j++;
ext[i]=j,k=i;
}
}
}
int main(){
cin>>a>>b;
la=strlen(a),lb=strlen(b);
add(b);
find(a,b);
for(int i=0;i<lb;i++) ans^=(i+1)*(nxt[i]+1);
printf("%lld\n",ans);
ans=0;
for(int i=0;i<la;i++) ans^=(i+1)*(ext[i]+1);
printf("%lld",ans);
return 0;
}