#include #include #include using namespace std; int main() { int n; while (cin>>n) { vector v(n+10, -1); v[1]=1; queue q; q.push(1); while (q.size()) { auto p=q.front(); q.pop(); int k=__builtin_popcount(p); if (p-k>0 and !~v[p-k]) { v[p-k]=v[p]+1; q.push(p-k); } if (p+k<=n and !~v[p+k]) { v[p+k]=v[p]+1; q.push(p+k); } } cout<<(int)v[n]<