//No.3 ビットすごろく #include #include #include #include #define NMAX 10000 using namespace std; int C[NMAX]; int N; int cal(int val, int cost) { ++cost; bitset<32> bs(val); int count = bs.count(); int next_l = val - count; int next_r = val + count; if (next_l > 0) if (cost < C[next_l - 1]) { C[next_l - 1] = cost; cal(next_l, cost); } if (next_r <= N) if (cost < C[next_r - 1]) { C[next_r - 1] = cost; cal(next_r, cost); } return val; } int solve() { cal(1, 1); return C[N - 1] < INT_MAX ? C[N - 1] : -1; } int main() { cin >> N; for (int i = 0; i < N; ++i) C[i] = INT_MAX; cout << solve(); return 0; }