package no320; import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { long[] fib = new long[81]; long[] fibsum = new long[81]; fib[1] = fib[2] = 1; for(int i=3;i<=80;i++) { fib[i] = fib[i-2] + fib[i-1]; } for(int i=1;i<=80;i++) { fibsum[i] = fibsum[i-1] + fib[i]; } Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long m = sc.nextLong(); long x = fib[n] - m; if (x == 0) { System.out.println(0); return; } //フィボナッチ数列は指数的に増加するから大きい方から詰めていけば実はOKという予想 ArrayList al = new ArrayList<>(); al.add(new Pair(0,0)); for(int i=n-2;i>=1;i--) { ArrayList next = new ArrayList<>(); for(Pair p:al) { if (p.x + fib[i] == x) { System.out.println(p.dist + 1); return; }else if(p.x + fib[i] < x) { next.add(new Pair(p.x + fib[i], p.dist + 1)); } if (p.x + fibsum[i-1] >= x) { next.add(p); } } al = next; } System.out.println(-1); } } class Pair { int dist; long x; public Pair(long x,int dist) { this.x = x; this.dist = dist; } }