#include <bits/stdc++.h>
using namespace std;
long long dp[100][2], s, x;
long long dfs(int p, int ok) {
  if (p >= 60 && ok == 0) return dp[p][ok] = 1;
  if (dp[p][ok] != -1) return dp[p][ok];
  dp[p][ok] = 0;
  for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 2; j++) {
      if ((i + j + ok) % 2 != ((s >> p) & 1)) continue;
      if ((i ^ j) != ((x >> p) & 1)) continue;
      dp[p][ok] += dfs(p + 1, (i + j + ok) / 2);
    }
  }
  return dp[p][ok];
}
int main() {
  memset(dp, -1, sizeof(dp));
  scanf("%I64d%I64d", &s, &x);
  dp[0][0] = dfs(0, 0);
  if (s == x) {
    dp[0][0] -= 2;
  }
  printf("%I64d\n", dp[0][0]);
}
