open System let rec binarySearch ng ok func = if abs (ok-ng) > 1 then let mid = (ok+ng)/2 if func mid then binarySearch ng mid func else binarySearch mid ok func else if func ok then Some(ok) else None let lowerBound (arr:'a[]) x = binarySearch -1 arr.Length (fun mid -> compare arr.[mid] x >= 0) let arr = let rec f a = [| yield a if a < (int 1e9 + 5) then yield! f (a*2) |] f 1 let N = Console.ReadLine() |> int let ans = match lowerBound arr N with | Some(x) -> let n1 = x let n2 = arr.[n1] - N n1 + n2 | None -> -1 ans |> printfn "%i"