#include <iostream>
#include <vector>
#include <cstdio>
#include <sstream>
#include <map>
#include <string>
#include <algorithm>
#include <queue>
#include <cmath>
#include <set>
using namespace std;

template<class T>
ostream& operator << (ostream& os, vector<T> vec){
	for(int i=0; i<vec.size(); i++){
		os << vec[i] << " ";
	}
	return os;
}

int main(){
	long long n,m;
	cin >> n >> m;

	vector<long long> fib(n+1, 0);
	fib[0] = fib[1] = 1;
	for(int i=2; i<n; i++){
		fib[i] = fib[i-1] + fib[i-2];
	}

	long long val = fib[n-1] - m;
	if(val<0){
		cout << -1 << endl;
		return 0;
	}

	int cnt = 0;
	int k = n-3;
	while(val){
		if(val >= fib[k]){
			val -= fib[k];
			cnt++;
		}
		k--;
	}
	cout << cnt << endl;

	return 0;
}