from collections import deque def bit_count(n): cnt = 0 while 0 < n: n &= n-1 cnt += 1 return cnt def main(): """ main """ N = int(input()) dp = [0 for _ in range(N+1)] dp[1] = 1 q = deque([(1, 1)]) # queueが空になるまでloopを回し、到達すればbreak and return while q: pos, cnt = q.popleft() if pos == N: print(cnt) break step = bit_count(pos) if 1 < (pos - step) and dp[pos - step] == 0: dp[pos-step] = cnt + 1 q.append((pos-step, cnt+1)) if (pos + step) <= N and dp[pos + step] == 0: dp[pos+step] = cnt + 1 q.append((pos+step, cnt+1)) else: print(-1) main()