#include <bits/stdc++.h>
using namespace std;
const int MAXN = 60;
long long bufs[MAXN], bufx[MAXN];
long long dp[MAXN][2][2][2];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  long long s, x;
  cin >> s >> x;
  long long buf_s = s, buf_x = x;
  for (int i = 0; i < MAXN; i++) {
    bufs[i] = buf_s % 2;
    buf_s /= 2;
  }
  for (int i = 0; i < MAXN; i++) {
    bufx[i] = buf_x % 2;
    buf_x /= 2;
  }
  dp[0][0][0][0] = 1;
  for (int len = 1; len < MAXN; len++) {
    for (int i = 0; i < 2; i++)
      for (int j = 0; j < 2; j++)
        for (int pl = 0; pl < 2; pl++) {
          dp[len][i][j][pl] = 0;
          for (int ii = 0; ii < 2; ii++)
            for (int jj = 0; jj < 2; jj++) {
              for (int la_pl = 0; la_pl < 2; la_pl++) {
                if ((ii + jj + la_pl) / 2 == pl &&
                    (i + j + pl) % 2 == bufs[len - 1] &&
                    (i ^ j) == bufx[len - 1]) {
                  dp[len][i][j][pl] += dp[len - 1][ii][jj][la_pl];
                }
              }
            }
        }
  }
  if (s == x) {
    dp[MAXN - 1][0][0][0] -= 2;
  }
  cout << dp[MAXN - 1][0][0][0] << endl;
  return 0;
}
