N = int(input()) v = [i for i in range(N)] is_visited = [False for i in range(N)] for i in range(2): is_visited[i] = True is_reached = False count = 1 que = [] que.append(2) while len(que) > 0: v_i = que.pop(0) count += 1 if v_i == N: is_reached = True break else: step = bin(v_i).count("1") if v_i+step <= N and is_visited[v_i+step-1] == False: is_visited[v_i+step-1] = True que.append(v_i+step) elif v_i-step > 0 and is_visited[v_i-step-1] == False: is_visited[v_i-step-1] = True que.append(v_i-step) if is_reached: print(count) else: print(-1)