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())