def greedy(A,B): Z=-1; T=[] for x in range(A+1): for y in range(B+1): if min(x,y,x^y)>Z: Z=min(x,y,x^y) T=[(x,y,Z)] elif min(x,y,x^y)==Z: T.append((x,y,Z)) return T def solve(A,B): a=A.bit_length(); b=B.bit_length() if a==b: return (1<<(a-1))-1 else: return min(A,B) A,B=map(int,input().split()) print(solve(A,B))