#include<bits/stdc++.h>
using namespace std;
#define int long long
namespace acac
{
int A[7100],B[7100];
const int xz=1e16;
void cf(int A[])
{
int jw=0;
for(int i=1;i<=A[0];i++)
{
A[i]*=2;
A[i]+=jw;
// cout<<jw<<' ';
jw=A[i]/xz;
A[i]%=xz;
// cout<<A[i]<<' ';
}
if(jw)A[0]++,A[A[0]]=jw;
}
void fc(int A[])
{
if(!A[0])return ;
int tw=0;
for(int i=A[0];i;i--)
{
int now=A[i]+tw;
tw=now%2*xz;
A[i]=now/2;
}
while(!A[A[0]]&&A[0])A[0]--;
}
void cp(int A[],int B[])
{
A[0]=B[0];
for(int i=1;i<=A[0];i++)
{
A[i]=B[i];
}
}
int Ans[7100];
void seb(int A[],int B[])
{
Ans[0]=A[0];
int tw=0;
for(int i=1;i<=A[0];i++)
{
Ans[i]=A[i]-B[i]-tw;
// if(A[1]==27&&B[1]==3)cout<<Ans[i]<<' '<<B[i]<<endl;
if(Ans[i]<0)Ans[i]+=xz,tw=1;
else tw=0;
}
while(!Ans[Ans[0]]&&Ans[0])Ans[0]--;
}
int bs(int A[],int B[])
{
if(A[0]<B[0])return -1;
if(A[0]>B[0])return 1;
for(int i=A[0];i;i--)
{
if(A[i]>B[i])return 1;
if(A[i]<B[i])return -1;
}
return 0;
}
char S[100010],S2[100010];
void read(int A[])
{
int n=strlen(S+1),ed=0;
for(int i=1;i<=n;i++)
{
S2[i]=S[n-i+1];
}
int base=1;
for(int i=0;(i+1)*16<n;i++)
{
ed=(i+1)*16;
A[0]++;
base=1;
for(int j=1;j<=16;j++)
{
A[i+1]=A[i+1]+(S2[i*16+j]-'0')*base;
base*=10;
}
// cout<<A[i+1]<<' ';
}
A[0]++;
base=1;
for(int j=ed+1;j<=n;j++)
{
A[A[0]]=A[A[0]]+(S2[j]-'0')*base;
base*=10;
}
// cout<<A[A[0]]<<' ';
// cout<<endl;
}
void print(int A[])
{
if(!A[0])
{
cout<<0;
return ;
}
for(int i=A[0];i;i--)
{
if(i==A[0])cout<<A[i];
else
{
int ws=16;
int ys=A[i];
if(ys==0)ws--;
while(ys)
{
ys/=10;
ws--;
}
while(ws--)
{
cout<<0;
}
cout<<A[i];
}
}
}
void swap(int A[],int B[])
{
cp(Ans,A);
cp(A,B);
cp(B,Ans);
}
int main()
{
scanf("%s",S+1);
read(A);
scanf("%s",S+1);
read(B);
if(bs(A,B)<0)swap(A,B);
int tot=0;
//print(A);
//cout<<endl;
while(!(A[1]&1)&&!(B[1]&1))
{
// cout<<"YES!";
fc(A);
fc(B);
// print(A);
// cout<<endl;
// print(B);
// cout<<endl;
tot++;
}
// cout<<bs(A,B)<<endl;
while(bs(A,B))
{
// int tf=0;
// if(A[1]>0&&B[1]>0)tf=1,cout<<A[1]<<' '<<B[1]<<endl;
if(!(A[1]&1))fc(A);
else if(!(B[1]&1))fc(B);
else seb(A,B),cp(A,Ans);
// if(tf)cout<<A[1]<<' '<<B[1]<<endl;
if(bs(A,B)<0)swap(A,B);
}
while(tot--)
{
cf(A);
}
print(A);
return 0;
}
}
#undef int
int main()
{
acac::main();
return 0;
}