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