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 and 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]