#include<iostream>
using namespace std;
unsigned long long dfs(unsigned long long x,unsigned long long y){
if(x==0) return y;
if(y==0) return x;
unsigned long long i,j;
for(i=0;0==(x&1);i++) x>>=1;
for(j=0;0==(y&1);j++) y>>=1;
if(i>j) i=j;
while(1){
if(x<y) x^=y,y^=x,x^=y;
if(0==(x-=y)) return y>>i;
while(0==(x&1)) x/=2;
}
}
int main(){
unsigned long long i,j;
cin>>i>>j;
cout<<dfs(i,j)<<endl;
return 0;
}