#include <queue>
#include <iostream>
using namespace std;
int dp[100001];
int main() {
  int N;
  cin >> N;
  dp[1] = 1;
  queue<int> que;
  que.push(1);
  while(!que.empty()) {
    int cur = que.front(); que.pop();
    int move = __builtin_popcount(cur);
    if(cur + move <= N && dp[cur + move] == 0) {
      dp[cur + move] = dp[cur] + 1; que.push(cur + move);
    }
    if(cur - move >= 1 && dp[cur - move] == 0) {
      dp[cur - move] = dp[cur] + 1; que.push(cur - move);
    }
  }
  cout << (dp[N] ?: -1) << endl;
}