#include #include #include #include #include #include #include #include #include #include #include #include #define INF 1000000000 using namespace std; typedef long long int ll; typedef pair P; int main() { int n; scanf("%d", &n); vector v[10001]; for(int i=1; i<=n; i++){ int i0=i; int c=0; while(i0>0){ c+=(i0%2); i0/=2; } if(i-c>=1){ v[i].push_back(i-c); } if(i+c<=n){ v[i].push_back(i+c); } } queue que; int d[10001]; fill(d, d+n+1, INF); d[1]=0; que.push(1); while(!que.empty()){ int x=que.front(); que.pop(); for(int i=0; id[x]+1){ d[y]=d[x]+1; que.push(y); } } } if(d[n]==INF){ printf("%d\n", -1); }else{ printf("%d\n", d[n]+1); } return 0; }