#include <bits/stdc++.h>
using namespace std;
long long Count(long long s, long long x) {
long long diff = s - x;
if (diff < 0 || diff % 2) return 0;
long long c = diff / 2;
if ((c & x) != 0) return 0;
int cnt = __builtin_popcountll(x);
long long total = 1LL << cnt;
if (c == 0 && x > 0) total -= 2;
return total;
}
int main() {
freopen("sumxor.inp", "r", stdin);
freopen("sumxor.out", "w", stdout);
long long s, x;
cin >> s >> x;
cout << Count(s, x) << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpsb25nIGxvbmcgQ291bnQobG9uZyBsb25nIHMsIGxvbmcgbG9uZyB4KSB7CiAgICBsb25nIGxvbmcgZGlmZiA9IHMgLSB4OwogICAgaWYgKGRpZmYgPCAwIHx8IGRpZmYgJSAyKSByZXR1cm4gMDsKICAgIGxvbmcgbG9uZyBjID0gZGlmZiAvIDI7CiAgICBpZiAoKGMgJiB4KSAhPSAwKSByZXR1cm4gMDsKICAgIGludCBjbnQgPSBfX2J1aWx0aW5fcG9wY291bnRsbCh4KTsKICAgIGxvbmcgbG9uZyB0b3RhbCA9IDFMTCA8PCBjbnQ7CiAgICBpZiAoYyA9PSAwICYmIHggPiAwKSB0b3RhbCAtPSAyOyAKICAgIHJldHVybiB0b3RhbDsKfQoKaW50IG1haW4oKSB7CiAgICBmcmVvcGVuKCJzdW14b3IuaW5wIiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJzdW14b3Iub3V0IiwgInciLCBzdGRvdXQpOwogICAgbG9uZyBsb25nIHMsIHg7CiAgICBjaW4gPj4gcyA+PiB4OwogICAgY291dCA8PCBDb3VudChzLCB4KSA8PCAiXG4iOwp9