#include #include #include #include #include #include #include #include #include using namespace std; int bitcount(int n){ int count = 0; while(n != 0){ count += n%2; n /= 2; } return count; } int main(){ int n; cin >> n; int now; int ans = 0; vector flag(n+1, 114514); queue que; flag[1] = 1; que.push(1); while(!que.empty()){ now = que.front(); que.pop(); if(now-bitcount(now) > 0 && flag[now-bitcount(now)] == 114514){ flag[now-bitcount(now)] = flag[now] + 1; que.emplace(now-bitcount(now)); } if(now+bitcount(now) <= n && flag[now+bitcount(now)] == 114514){ flag[now+bitcount(now)] = flag[now] + 1; que.emplace(now+bitcount(now)); } } if(flag[n] < 114514){ ans = flag[n]; }else{ ans = -1; } cout << ans << endl; }