n = int(input()) movable_number = [] move_min = -1 def go(i, move): global movable_number global move_min if i in movable_number: return if i > n: return if i == 0: return if i == n: if move_min == -1: move_min = move else: if move < move_min: move_min = move return movable_number.append(i) s = bin(i) num_one = s[2:].count('1') foward = i + num_one back = i - num_one go(foward, move + 1) go(back, move + 1) i = 1 go(1, 1) print(move_min)