Problem:
Score : 900 points

Problem Statement

Nukes has an integer that can be represented as the bitwise OR of one or more integers between A and B (inclusive).
How many possible candidates of the value of Nukes's integer there are?

Constraints

1 ≤ A ≤ B < 2^{60}

A and B are integers.

Input

The input is given from Standard Input in the following format:

A
B

Output

Print the number of possible candidates of the value of Nukes's integer.

Sample Input 1

7
9

Sample Output 1

4

In this case, A=7 and B=9. There are four integers that can be represented as the bitwise OR of a non-empty subset of {7, 8, 9}: 7, 8, 9 and 15.

Sample Input 2

65
98

Sample Output 2

63

Sample Input 3

271828182845904523
314159265358979323

Sample Output 3

68833183630578410

Solution in Ruby (2.3.3) (judge verdict: Runtime Error)

a=gets.to_i
b=gets.to_i
r=[1]
62.times do
  r<< r[-1]*2
end
ra=nil
rb=nil
63.times do |i|
  if r[i]>=a
    ra=i if !ra
  end
  if r[i]>=b
    rb=i
    break
  end
end
as=a.to_s(2)
bs=b.to_s 2
if rb-ra>=2
  p r[rb]-a
elsif rb-ra==1
  al=ra-1
  al=as.index(?0)-1 if as.index(?0)
  al=[al,bs[1..-1].index(?1)].min if bs[1..-1].index(?1)
  p r[ra]-a + [r[rb]-r[ra],b-a+r[ra]-b+r[ra-al]].min
else
  raise
end