N=int(input()) list={1:1} que=[(1,1)] loc=1 while True: cnt=que[0][1]+1 loc=que[0][0] mov=(bin(loc)).count("1") if loc+mov<=N: if loc+mov not in list: list[loc+mov]=cnt que.append((loc+mov,cnt)) if loc-mov>=1: if loc-mov not in list: list[loc-mov]=cnt que.append((loc-mov,cnt)) que.pop(0) if que==[]: break if N not in list: print(-1) else: print(list[N])