#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int MAX = 1e6 + 5;
// should be accepted (Fast - I/O)
int MSB(ll n)
{
int msb = -1;
while (n > 0)
{
n = n >> 1;
msb++;
}
return msb;
}
void solve()
{
ll n, x;
cin >> n >> x;
vector<int> pre(61, 0);
for (int bit = 0; bit <= 60; bit++)
{
bool is_set = ((1LL << bit) & x);
pre[bit] = is_set;
if (bit)
{
pre[bit] += pre[bit - 1];
}
}
ll ans = 0;
int msb = MSB(n);
for (int bit = msb; bit >= 0; bit--)
{
if ((1LL << bit) & n)
{
int ones = (bit ? pre[bit - 1] : 0);
ans += (1LL << (bit - ones));
if ((1LL << bit) & x)
{
break;
}
}
}
ans += ((n & x) == 0);
cout << ans - 1 << endl;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t = 1;
// cin >> t;
while (t--)
{
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKCmNvbnN0IGludCBNQVggPSAxZTYgKyA1OwoKLy8gc2hvdWxkIGJlIGFjY2VwdGVkIChGYXN0IC0gSS9PKQoKaW50IE1TQihsbCBuKQp7CiAgICBpbnQgbXNiID0gLTE7CiAgICB3aGlsZSAobiA+IDApCiAgICB7CiAgICAgICAgbiA9IG4gPj4gMTsKICAgICAgICBtc2IrKzsKICAgIH0KICAgIHJldHVybiBtc2I7Cn0KCnZvaWQgc29sdmUoKQp7CiAgICBsbCBuLCB4OwogICAgY2luID4+IG4gPj4geDsKCiAgICB2ZWN0b3I8aW50PiBwcmUoNjEsIDApOwogICAgZm9yIChpbnQgYml0ID0gMDsgYml0IDw9IDYwOyBiaXQrKykKICAgIHsKICAgICAgICBib29sIGlzX3NldCA9ICgoMUxMIDw8IGJpdCkgJiB4KTsKICAgICAgICBwcmVbYml0XSA9IGlzX3NldDsKICAgICAgICBpZiAoYml0KQogICAgICAgIHsKICAgICAgICAgICAgcHJlW2JpdF0gKz0gcHJlW2JpdCAtIDFdOwogICAgICAgIH0KICAgIH0KCiAgICBsbCBhbnMgPSAwOwogICAgaW50IG1zYiA9IE1TQihuKTsKCiAgICBmb3IgKGludCBiaXQgPSBtc2I7IGJpdCA+PSAwOyBiaXQtLSkKICAgIHsKICAgICAgICBpZiAoKDFMTCA8PCBiaXQpICYgbikKICAgICAgICB7CiAgICAgICAgICAgIGludCBvbmVzID0gKGJpdCA/IHByZVtiaXQgLSAxXSA6IDApOwogICAgICAgICAgICBhbnMgKz0gKDFMTCA8PCAoYml0IC0gb25lcykpOwoKICAgICAgICAgICAgaWYgKCgxTEwgPDwgYml0KSAmIHgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGFucyArPSAoKG4gJiB4KSA9PSAwKTsKCiAgICBjb3V0IDw8IGFucyAtIDEgPDwgZW5kbDsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CgogICAgaW50IHQgPSAxOwogICAgLy8gY2luID4+IHQ7CgogICAgd2hpbGUgKHQtLSkKICAgIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9