n = int(input()) movable_number = [] move = 0 isend = False def go(i, move): global movable_number global n_max global isend if isend == True: return if i in movable_number: return if i > n: return if i == 0: return if i == n: print(move) isend = True 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('end')