#include<bits/stdc++.h>
using namespace std;
int main () {
long long x,y;
cin >> x >> y;
long long ans = 0;
bool first = false;
for(int i = 18; i >= 0 && y != x; i--){
//(1 & 5>>2)
int x_bit = ((x>>i)&1);
int y_bit = ((y>>i)&1);
if(first == false && y_bit == 1){
first = true;
if(x_bit == 0){
ans += (1 << i);
}
continue;
}
if(first){
ans += (1 << i);
}
}
cout << ans << endl;
return 0;
}
what is wrong in this logic, i am not getting which test case is failing