INF = 10 ** 9 MOD = 10 ** 9 + 7 import sys sys.setrecursionlimit(100000000) dy = (-1,0,1,0) dx = (0,1,0,-1) from copy import deepcopy from bisect import bisect_left def main(): n,k = map(int,input().split()) if n == 0: if k == 0: print(1) else: print('INF') return m = 0 for i in range(50): if (n>>i)&1: m = max(m,i) bit_sum = pow(2,m + 1) - n - 1 lower_limit = pow(2,m) if lower_limit * 2 <= k + bit_sum: print('INF') return upper_limit = 1 while upper_limit < k: upper_limit *= 2 ans = 0 for x in range(n,n + upper_limit + 1): for y in range(x,x + k + 1): if x&y == n: ans += 1 print(ans) if __name__ == '__main__': main()