# 再帰呼び出し N = int(input()) queue = {"count":1, "position":1} passed_position = {1} def get_count(q): current_position = q["position"] current_count = q["count"] if current_position == N: return current_count elif current_position < N: steps = bin(current_position).count("1") forward_position = current_position + steps backward_position = current_position - steps if forward_position not in passed_position and 1 < forward_position <= N: passed_position.add(forward_position) return get_count({"count":current_count+1, "position":forward_position}) if backward_position not in passed_position and 1 < backward_position <= N: passed_position.add(backward_position) return get_count({"count":current_count+1, "position":backward_position}) result = get_count(queue) print(result if result else -1)