import Data.Bits bitsugoroku :: Int -> Int -> [Int] -> [[Int]] bitsugoroku i n path | elem i path = [] | i < 1 || i > n = [] | i == n = [i : path] | otherwise = concat [bitsugoroku (i + popCount i) n (i : path), bitsugoroku (i - popCount i) n (i : path)] main = do n <- readLn let m = map length $ bitsugoroku 1 n [] print $ if m == [] then -1 else minimum m