#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;
}