from collections import deque n = int(input()) Que = deque([(1, 1)]) seen = set([1]) ans = -1 while Que: curr, cnt = Que.popleft() if curr == n: ans = cnt break cc = curr res = 0 while cc != 0: res += cc % 2 cc //= 2 if curr - res >= 1 and curr - res not in seen: seen.add(curr - res) Que.append((curr - res, cnt + 1)) if curr + res <= n and curr + res not in seen: seen.add(curr + res) Que.append((curr + res, cnt + 1)) print(ans)