goal = int(input()) # goal_1bit_num = bin(goal) # print(goal_1bit_num.count('1')) stepped = set() maybe_answers = set() def step(position, count): if position in stepped: return else: stepped.add(position) if position not in range(1, goal + 1): return if position == goal: maybe_answers.add(count) return bit1_num = bin(position).count('1') step(position + bit1_num, count + 1) step(position - bit1_num, count + 1) step(1, 1) if len(maybe_answers) == 0: print('-1') else: print(min(maybe_answers))