from collections import deque N=int(input()) def BitSugoroku(): D = deque([0]*(N+1)) D[1] = 1 q = deque() q.append(1) while(q): v_now = q.popleft() if v_now == N: return D[v_now] bitcount = bin(v_now).count("1") v_rear = v_now + bitcount v_front = v_now - bitcount if(0 < v_rear <= N) and (D[v_rear]==0): q.append(v_rear) D[v_rear] = D[v_now] + 1 if(0<v_front<=N) and (D[v_front]==0): q.append(v_front) D[v_front] = D[v_now] + 1 return -1 if __name__ == "__main__": print(BitSugoroku())