def countbit(n): m = n cnt = 0 while m != 0: if m % 2 == 1: cnt += 1 m = m / 2 return cnt N = int(raw_input()) passed = [False] board = [-1] for i in range(0, N): passed.append(True) board.append(-1) queue = [[1, 1, passed]] while queue != []: now = queue.pop(0) newpassed = now[2] if now[2][now[0]]: newpassed[now[0]] = False move = countbit(now[0]) if board[now[0]] == -1 or board[now[0]] > now[1]: board[now[0]] = now[1] if now[0] + move <= N: queue.append([now[0]+move, now[1]+1, newpassed]) if now[0] - move >= 1: queue.append([now[0]-move, now[1]+1, newpassed]) print board[N]