#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { int n; cin >> n; queue> que; que.push(make_pair(1,1)); for (int i = 1; i < 100000; i++) { int x = que.front().first; int y = que.front().second; if (x == n) { cout << y << endl; return 0; } que.pop(); bitset<15> bit = x; int co = 0; for (int i = 0; i < 15; i++) { if (bit[i]) { co++; } } if (x + co <= n) { que.push(make_pair(x + co, y + 1)); } if (x - co > 0) { que.push(make_pair(x - co, y + 1)); } } cout << "-1" << endl; return 0; }