#include int main() { int N; std::cin >> N; std::vector memo(N,-1); std::queue q; memo[0] = 1; q.push(0); while(!q.empty()){ int now = q.front(); q.pop(); int c = std::bitset<31>(now+1).count(); for(auto&next:{now+c,now-c}){ if(next<0||N<=next)continue; if(memo[next]==-1){ memo[next] = memo[now]+1; q.push(next); } } } int ans = memo[N-1]; ans = (ans==INT_MAX)?-1:ans; std::cout << ans << std::endl; }