N, K = gets.split.map(&:to_i) if N == 0 if K == 0 puts 1 else puts "INF" end exit end values = (0 ... 1<<18).filter { |x| N & x == N } M = values.size ans = 0 (0 ... M).each do |i| j_max = (i ... M).bsearch { |j| values[j] - values[i] > K } || M ans += j_max - i + 1 end puts ans