def adic(n): Ret = [0]*18 for i in range(18): if n%2 == 0: Ret[i] = 0 else: Ret[i] = 1 n //= 2 return Ret N, K = map( int, input().split()) check = 2**18 Nadic = adic(N) for i in range(18): if Nadic[i] == 0: check -= 2**i if check <= K: print("INF") else: D = [0] + [2**i for i in range(18) if Nadic[i] == 0] ans = 1 P = len(D) r = 0 c = 0 for i in range(P): c = D[i] for t in range(i ,P): if D[t] - c > K: break r = t ans += r - i print(ans)