N=int(input()) L=[10**10 for i in range(N+1)] L[0]=0 L[1]=1 n=[0 for i in range(N+1)] n[1]=1 for i in range(2,N+1): a=i cnt=0 for j in range(14): if a//(2**(13-j))==1: cnt+=1 a%=(2**(13-j)) n[i]=cnt #print(n[:10]) import heapq import copy #[1からのlength,移動距離,今の場所] Q=[[2,1,1]] heapq.heapify(Q) for i in range(10**7): if len(Q)==0: break else: q=copy.deepcopy(Q[0]) #print(q) heapq.heappop(Q) if (q[2]+q[1])<=N: if L[q[2]+q[1]]>q[0]: L[q[2]+q[1]]=q[0] heapq.heappush(Q,[q[0]+1,n[q[2]+q[1]],q[2]+q[1]]) heapq.heappush(Q,[q[0]+1,-n[q[2]+q[1]],q[2]+q[1]]) if (q[2]-q[1])<=N: if L[q[2]-q[1]]>q[0]: L[q[2]-q[1]]=q[0] heapq.heappush(Q,[q[0]+1,n[q[2]-q[1]],q[2]-q[1]]) heapq.heappush(Q,[q[0]+1,-n[q[2]-q[1]],q[2]-q[1]]) #print(L[:12]) if L[N]==10**10: print(-1) else: print(L[N])