n = int(input()) board = [-1 for _ in range(n+1)] board[1] = 1 i = 1 while i <= n: c = bin(i)[2:].count("1") if board[i] < 0: i += 1 continue if i+c < n+1 and (board[i+c] > board[i]+1 or board[i+c] == -1): board[i+c] = board[i] + 1 if i-c > 0: if board[i-c] > board[i]+1 or board[i-c] == -1: board[i-c] = board[i]+1 i = i-c continue i += 1 print(board[n])