from collections import deque N = int(input()) queue = deque([{"count":1, "position":1}]) passed_position = [] result = -1 while queue: q = queue.popleft() current_position = q["position"] current_count = q["count"] if current_position == N: result = current_count if current_position < N: passed_position.append(current_position) steps = bin(current_position).count("1") forward_step = current_position + steps backward_step = current_position - steps if forward_step not in passed_position and 1 < forward_step <= N: queue.append({"count":current_count+1, "position":forward_step}) if backward_step not in passed_position and 1 < backward_step <= N: queue.append({"count":current_count+1, "position":backward_step}) print(result)