#include #include #include using namespace std; int bitcount32(int dw32) // 32 bits 値) { // 32 bits 限定アルゴリズムを利用している int cnt = 0; while(dw32){ if(dw32 & 1) cnt += 1; dw32 >>= 1; } return cnt; }//bitcount32 int main(){ int N; scanf("%d",&N); int cnt = 1; vector flag(N+1,false); int posi = 1; flag[posi] = true; while(posi != N){ //cout << "posi : " << posi << endl; int count = bitcount32(posi); if(posi+count > N){ posi -= count; if(flag[posi]){ cnt = -1; break; } cnt++; flag[posi] = true; } else{ posi += count; if(flag[posi]){ cnt = -1; break; } cnt++; flag[posi] = true; } } printf("%d\n",cnt); }