#include using namespace std; vector a; vector b; int bitsum(int n){ int ans=0; while(n>0){ if(n&1) ans++; n>>=1; } return ans; } int sugoroku(int i,int n){ if(i<=0 || i>n) return 100000000; if(b.at(i)) return 100000000; b.at(i)=true; if(i==n) return 1; return min(sugoroku(i+a.at(i),n)+1,sugoroku(i-a.at(i),n)+1); } int main(){ int n;cin >> n; a.resize(n+1); b.resize(n+1,false); for(int i=1;i<=n;++i){ a.at(i)=bitsum(i); } int ans=sugoroku(1,n); if(b.at(n)) cout << ans << endl; else cout << -1 << endl; }