N=int(input()) D=[10**9 for i in range(N+1)] D[0]=0 D[1]=1 Q=[1] for i in range(10**6): if i==len(Q): break n=Q[i] sn=str(bin(Q[i])) cnt=sn.count("1") #print(cnt) if Q[i]+cnt<=N and D[Q[i]+cnt]==10**9: D[Q[i]+cnt]=D[Q[i]]+1 Q.append(Q[i]+cnt) if Q[i]-cnt>1 and D[Q[i]-cnt]==10**9: D[Q[i]-cnt]=D[Q[i]]+1 Q.append(Q[i]-cnt) if D[N]==10**9: print(-1) else: print(D[N])