/* * main.cpp * * Created on: 2017/10/06 * Author: sep */ #include #include #include #include #include #include #include #include #include using namespace std; inline int main003(); inline int main2(); inline int main3(); inline int main4(); int main() { main003(); return 0; } inline unsigned char get_bit(unsigned int x) { unsigned int i; unsigned char c = 0; for (i = 1; i < (1 << 16); i <<= 1) if ((x & i) == i) c++; return c; } inline int main003() { unsigned int num, route; int c; map r; cin >> num; map::iterator itr; route = 1, c = 1; r[route] = 1; while (route != num) { c++; if (route + get_bit(route) <= num) { route += get_bit(route); r[route] = 1; } else { route -= get_bit(route); if ((route > num) || ((itr = r.find(route)) != r.end())) { c = -1; break; } r[route] = 1; } } cout << c; }