#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:1024000000,1024000000")
long long powmod(long long a, long long b) {
  long long res = 1;
  a %= 1000000007;
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % 1000000007;
    a = a * a % 1000000007;
  }
  return res;
}
int gcd(int x, int y) {
  while (y) {
    int t = x % y;
    x = y;
    y = t;
  }
  return x;
}
int main() {
  long long s, x, y, a, b;
  scanf("%lld%lld", &s, &x);
  if ((s - x) & 1) {
    puts("0");
  } else {
    long long ans = 0, n = 0;
    y = (s - x) / 2;
    for (int i = 0; i < 40; i++) {
      if (((x >> i) & 1) && ((y >> i) & 1)) {
        puts("0");
        return 0;
      } else if (((x >> i) & 1) && !((y >> i) & 1))
        n++;
    }
    ans = 1LL << n;
    if (s == x) ans -= 2;
    printf("%lld\n", ans);
  }
  return 0;
}
