from collections import deque N=int(input()) Node=(1,1) Route=[1] Q=deque([Node]) while Q: n,count=Q.popleft() if n==N: print(count);exit() mass_2=bin(n).count("1") if n+mass_2<=N and n+mass_2 not in Route: Route.append(n+mass_2) Q.append((n+mass_2,count+1)) if n-mass_2>1 and n-mass_2 not in Route: Route.append(n-mass_2) Q.append((n-mass_2,count+1)) print(-1)