#include using namespace std; int main() { int n; cin >> n; vector dp(n + 1, 1e9); dp[1] = 1; queue q; q.push(1); while (!q.empty()) { int now = q.front(); q.pop(); int diff = __builtin_popcount(now); if (now - diff > 0 && dp[now - diff] > dp[now] + 1) { dp[now - diff] = dp[now] + 1; q.push(now - diff); } if (now + diff <= n && dp[now + diff] > dp[now] + 1) { dp[now + diff] = dp[now] + 1; q.push(now + diff); } } if (dp[n] == 1e9) cout << -1 << '\n'; else cout << dp[n] << '\n'; }