N=int(input()) G=[[]for i in range(N+1)] T=[10**20 for i in range(N+1)] G[1].append(2) for i in range(2,N+1): cnt=0 n=i for j in range(14): if n//(2**(13-j))==1: cnt+=1 n%=(2**(13-j)) #print(i,n,cnt) G[i].append(i+cnt) G[i].append(i-cnt) #print(G) ans=1 L=[0 for i in range(N+1)] L[1]=1 #print(L) import heapq Q=[] heapq.heapify(Q) heapq.heappush(Q,[2,2]) for i in range(10**7): if len(Q)==0: break else: L[Q[0][1]]=Q[0][0] S=Q[0][1] Le=Q[0][0] heapq.heappop(Q) #print(G[S]) #print(L) if G[S][0]<=len(L)-1: if L[G[S][0]]==0: heapq.heappush(Q,[Le+1,G[S][0]]) if G[S][1]<=len(L)-1: if L[G[S][1]]==0: heapq.heappush(Q,[Le+1,G[S][1]]) #print(G) #print(L) if L[N]!=0: print(L[N]) else: print(-1)