nin = int(input()) mark = 100000 queue = [] bitlis = [] for i in range(1,nin+1): bit = 0 for item in list(str(bin(i))): if item == "1": bit += 1 bitlis.append(bit) def dps(n,m=1,lis=[]): xlis = lis.copy() xlis.append(n) if n == nin: global mark mark = min(m,len(xlis)) return for item in [n+bitlis[n-1],n-bitlis[n-1]]: if item < 1 or item > nin: continue else: if not item in xlis: queue.append((item,m+1,xlis)) dps(1) while queue: Tp = queue.pop() dps(Tp[0],Tp[1],Tp[2]) if mark != 100000: print(mark) else: print(-1)