#include <bits/stdc++.h>
#define maxn 10005
using namespace std;
string s;
int a[2][maxn],cnt;
bool work ()
{
if (a[0][0]>a[1][0]) return true;
if (a[0][0]<a[1][0]) return false;
for (int i=a[0][0];i>=1;i--)
if (a[0][i]>a[1][i]) return true;
return false;
}
void work2 (int x,int y)
{
for (int i=1;i<=a[x][0];i++)
{
a[x][i]-=a[y][i];
if (a[x][i]<0) a[x][i]+=10,a[x][i+1]-=1;
}
if (a[x][a[x][0]]==0) a[x][0]--;
return ;
}
void work3 (int x)
{
int t=0;
for (int i=1;i<=a[x][0];i++)
a[x][i]=a[x][i]*2+t,t=a[x][i]/10,a[x][i]%=10;
if (t>0) a[x][0]++,a[x][a[x][0]]=t;
return ;
}
void work4 (int x)
{
int t=0;
for (int i=a[x][0];i>=1;i--)
a[x][i]+=t*10,t=a[x][i]%2,a[x][i]/=2;
if (a[x][a[x][0]]==0) a[x][0]--;
return ;
}
void out (int x)
{
for (int i=a[x][0];i>=1;i--) cout<<a[x][i];
cout<<'\n';
return ;
}
int main ()
{
for (int i=0;i<=1;i++)
{
cin>>s; a[i][0]=s.size();
for (int j=1;j<=a[i][0];j++) a[i][j]=s[a[i][0]-j]-'0';
}
while (1)
{
if (a[0][0]==0)
{
for (int i=1;i<=cnt;i++) work3(1);
out(1);
break;
}
else if (a[1][0]==0)
{
for (int i=1;i<=cnt;i++) work3(0);
out(0);
break;
}
else if (a[0][1]%2==0&&a[1][1]%2==0) {work4(0);work4(1);cnt++;}
else if (a[0][1]%2==0&&a[1][1]%2==1) work4(0);
else if (a[0][1]%2==1&&a[1][1]%2==0) work4(1);
else
{
if (work()) work2(0,1);
else work2(1,0);
}
}
return 0;
}