#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
//用暴力,但是要处理一个小细节
//在转换成2进制时候,因为只要比较不同,为了节约时间,只求2进制的逆序
//由于两个数都是逆序,所以可以正常补零
//然后再分情况将不同的计数就可以了
//注意,不要翻转2二进制的逆序,如果翻转会超时
using namespace std;
using ll = long long;
int main() {
vector<ll>num1;
vector<ll>num2;
ll n, m;
cin >> n >> m;
while (n > 0) {
num1.push_back(n % 2);
n = n / 2;
}
while (m > 0) {
num2.push_back(m % 2);
m = m / 2;
}
int sum = 0;
if (num1.size() == num2.size()) {
int l = num1.size();
for (int i = 0; i < l; i++) {
if (num1[i] != num2[i])
sum++;
}
} else {
if (num1.size() > num2.size()) {
int l = num2.size();
for (int i = 0; i < l; i++) {
if (num1[i] != num2[i]) {
sum++;
}
}
for (int i = l; i < num1.size(); i++) {
if (num1[i] != 0) {
sum++;
}
}
}
if (num1.size() < num2.size()) {
int l = num1.size();
for (int i = 0; i < l; i++) {
if (num1[i] != num2[i]) {
sum++;
}
}
for (int i = l; i < num2.size(); i++) {
if (num2[i] != 0) {
sum++;
}
}
}
}
cout << sum << endl;
return 0;
}