#include #define REP(i, n) for (int i = 0; (i) < (int)(n); ++ (i)) #define REP3(i, m, n) for (int i = (m); (i) < (int)(n); ++ (i)) #define REP_R(i, n) for (int i = (int)(n) - 1; (i) >= 0; -- (i)) #define REP3R(i, m, n) for (int i = (int)(n) - 1; (i) >= (int)(m); -- (i)) #define ALL(x) begin(x), end(x) using ll = long long; using namespace std; ll solve(ll n, ll k) { ll cnt = 0; REP (x, 8 * n + 3) { REP3 (y, x, x + k + 1) { cnt += ((x & y) == n); } } ll cnt1 = 0; REP (x, 5000000) { REP3 (y, x, x + k + 1) { cnt1 += ((x & y) == n); } } if (cnt1 > cnt) return LLONG_MAX; return cnt; } int main() { ll n, k; cin >> n >> k; ll cnt = solve(n, k); if (cnt == LLONG_MAX) { cout << "INF" << endl; } else { cout << cnt << endl; } return 0; }