#include <bits/stdc++.h>
using namespace std;
int getMinOperations(long long n) {
int count = 0;
while (n > 0) {
long long x = ceil(log2((long double)n));
long long y = floor(log2((long double)n));
long long ans1 = 1LL << x;
long long ans2 = 1LL << y;
n = min(abs(n - ans1), abs(n - ans2));
count++;
}
return count;
}
int main() {
long long n;
if (cin >> n) {
cout << getMinOperations(n) << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZ2V0TWluT3BlcmF0aW9ucyhsb25nIGxvbmcgbikgewogICAgaW50IGNvdW50ID0gMDsKICAgIHdoaWxlIChuID4gMCkgewogICAgICAgIGxvbmcgbG9uZyB4ID0gY2VpbChsb2cyKChsb25nIGRvdWJsZSluKSk7CiAgICAgICAgbG9uZyBsb25nIHkgPSBmbG9vcihsb2cyKChsb25nIGRvdWJsZSluKSk7CiAgICAgICAgCiAgICAgICAgbG9uZyBsb25nIGFuczEgPSAxTEwgPDwgeDsKICAgICAgICBsb25nIGxvbmcgYW5zMiA9IDFMTCA8PCB5OwogICAgICAgIAogICAgICAgIG4gPSBtaW4oYWJzKG4gLSBhbnMxKSwgYWJzKG4gLSBhbnMyKSk7CiAgICAgICAgY291bnQrKzsKICAgIH0KICAgIHJldHVybiBjb3VudDsKfQoKaW50IG1haW4oKSB7CiAgICBsb25nIGxvbmcgbjsKICAgIGlmIChjaW4gPj4gbikgewogICAgICAgIGNvdXQgPDwgZ2V0TWluT3BlcmF0aW9ucyhuKSA8PCBlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0=