import Control.Applicative ((<$>)) import Data.Int (Int64) import qualified Data.Vector.Unboxed as V fibonacci :: (Integral a, V.Unbox a) => a -> a -> [a] fibonacci a1 a2 = seq a1 $ a1 : fibonacci a2 (a1 + a2) solve :: (Integral a, V.Unbox a) => a -> a -> Maybe a solve n m = sol 0 (fromIntegral (n - 3)) d0 where fibs = (V.fromList . take (fromIntegral n)) $ fibonacci 1 1 d0 = V.last fibs - m sol a (-1) 0 = Just a sol _ (-1) _ = Nothing sol a i d | d >= f = sol (a + 1) (i - 1) (d - f) | otherwise = sol a (i - 1) d where f = fibs V.! i main :: IO () main = do [n, m] <- fmap read . words <$> getLine :: IO [Int64] print $ case solve n m of Just a -> a Nothing -> -1