from collections import deque def main(): N = int(input()) visited = [False] * (N + 1) visited[1] = True Q = deque([(1, 1)]) while Q: n, c = Q.popleft() if n == N: print(c) quit() d = bin(n).count("1") for nn in (n + d, n - d): if 0 < nn <= N and not visited[nn]: visited[nn] = True Q.append((nn, c + 1)) print(-1) main()