#include using namespace std; #define rep(i,n) for(int i=0;i<(int)(n);i++) template inline bool chmax(T&a,T b){if(a inline bool chmin(T&a,T b){if(a>b){a=b;return 1;}return 0;} using ll = long long; int n; int main() { cin.tie(0); ios::sync_with_stdio(false); cin >> n; vector dp(n+1,-1); queue q; dp[1]=1, q.push(1); while(!q.empty()){ int now=q.front(); q.pop(); int x=__builtin_popcountll(now); for(int i=-x;i<=x;i+=x*2){ int next=now+i; if(next>=1 && next<=n && dp[next]==-1){ dp[next]=dp[now]+1; q.push(next); } } } cout << dp[n] << endl; }