#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int N; cin >> N; vector A(N + 1, -1); A[1] = 1; queue que; que.push(1); while (!que.empty()) { int pre = que.front(); que.pop(); int cur = pre + __builtin_popcount(pre); if (cur < N + 1 && A[cur] == -1) { A[cur] = A[pre] + 1; que.push(cur); } cur -= 2 * __builtin_popcount(pre); if (cur > 0 && A[cur] == -1) { A[cur] = A[pre] + 1; que.push(cur); } } cout << A[N] << '\n'; return 0; }