def experiment(): import numpy as np fib = [1] * 2 for _ in range(80): fib.append(fib[-1] + fib[-2]) choose = np.random.randint(0, 5, size=80) val = sum(fib[i] for i, c in enumerate(choose) if c == 0) print(val) # greedy? count = 0 for f in reversed(fib): if val >= f: val -= f count += 1 print(val, count, np.sum(choose == 0)) def main(): n, m = list(map(int, input().split())) fib = [1] * 2 for _ in range(n - 2): fib.append(fib[-1] + fib[-2]) val = fib[n - 1] - m if val < 0: return -1 count = 0 for f in reversed(fib[:-2]): if val >= f: val -= f count += 1 if val != 0: return -1 return count # experiment() print(main())