N = gets.to_i A = Array.new(N+1) ST = 1 A[ST] = 1 q = [ST] while n = q.shift do c = n.to_s(2).count("1") np = n + c if np <= N && !A[np] then A[np] = A[n] + 1 q << np end nm = n - c if nm >= 1 && !A[nm] then A[nm] = A[n] + 1 q << nm end end puts A[N] || -1