#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int inf = 1000000000; int bitcount(int n){ int cnt = 0; while( n != 0 ){ if( n % 2 == 1 ) cnt++; n /= 2; } return cnt; } int main(void) { int n; cin >> n; vector v(n+1, -1); queue q; q.push(1); v[1] = 1; while( !q.empty() ){ int now = q.front(); q.pop(); int cnt = bitcount(now); if( now + cnt <= n && v[now + cnt] == -1 ){ v[now + cnt] = v[now] + 1; q.push( now + cnt ); } if( now - cnt > 0 && v[now - cnt] == -1 ){ v[now - cnt] = v[now] + 1; q.push( now - cnt ); } } cout << v[n] << endl; return 0; }