#include <cstdio>
#include <vector>
#include <cmath>
using namespace std;
// ródło: ROSETTA-CODE {
long long mul_inv(long long a, long long b, long long mod)
{
	long long b0 = b, t, q;
	long long x0 = 0, x1 = 1;
	if (b == 1) return 1;
	while (a > 1) {
		q = a / b;
		t = b, b = a % b, a = t;
		t = x0, x0 = (x1 - q * x0) % mod, x1 = t;
	}
	if (x1 < 0) x1 += b0;
	return x1;
}

long long chinese_remainder(long long *n, long long *a, int len)
{
	long long p, i, prod = 1, sum = 0;

	for (i = 0; i < len; i++) prod *= n[i];

	for (i = 0; i < len; i++) {
		p = prod / n[i];
		sum += ((a[i] * mul_inv(p, n[i], prod)) % prod) * p % prod;
	}

	return sum % prod;
} // }

int n = 0;
long long r = 0;

vector < long long > tab[2];
long long cykl[2];
long long chinski_cykl[2];
long long dlugosc_cyklu;

long long dzies;

long long power(long long a, long long b){
    long long res = 1;
    for (int i = 0; i < b; i++){
        res *= a;
    }
    return res;
}

inline pair <int,int> next_fib(pair <int,int> f, int mod){
    return make_pair(f.second, (f.first + f.second) % mod);
}

void fibonacci(int t){
    int p;
    if (t == 0){
        p = power(2, n);
    }
    else {
        p = power(5, (n+2)/2);
    }
    pair <int,int> f = make_pair(0,1);
    chinski_cykl[t] = 1;
    long long r_tmp = r % p;
    for (int i = 0; i <= 6*p; i++){
        if ((i > 0) && (f.first == 0) && (f.second == 1)){
            cykl[t] = i;
            long long podziel;
            if (t == 0){
                podziel = 2;
                while (cykl[t] % podziel == 0){
                    cykl[t] /= podziel;
                    chinski_cykl[t] *= podziel;
                }
                cykl[t] *= chinski_cykl[t];
                podziel = 3;
                while (cykl[t] % podziel == 0){
                    cykl[t] /= podziel;
                    chinski_cykl[t] *= podziel;
                }
                cykl[t] *= chinski_cykl[t];
            }
            else {
                podziel = 5;
                while (cykl[t] % podziel == 0){
                    cykl[t] /= podziel;
                    chinski_cykl[t] *= podziel;
                }
                cykl[t] *= chinski_cykl[t];
            }

            break;
        }
        if (f.first == r_tmp){
            tab[t].push_back(i);
        }
        f = next_fib(f, p);
    }
}

long long macierz[2][2], pierw[2][2], vec[2];

/*long long przemnoz_liczby(long long a, long long b){
    int cyfry_a[19], cyfry_b[19], cyfry[38];
    for (int i = 0; i < n; i++){
        cyfry_a[i] = a % 10;
        cyfry_b[i] = b % 10;
        a /= 10;
        b /= 10;
    }
    for (int i = 0; i < 2*n; i++){
        cyfry[i] = 0;
    }
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            cyfry[i+j] += cyfry_a[i] * cyfry_b[j];
        }
    }
    long long res = 0, dz = 1;
    for (int i = 0; i < n; i++){
        res += (dz * (cyfry[i] % 10));
        cyfry[i+1] += cyfry[i] / 10;
        dz *= 10;
    }
    return res;
}*/

long long przemnoz_liczby(long long a, long long b){
    if (dzies <= 1000000000LL){
        return (a*b) % dzies;
    }
    else {
        long long q = 1000000000LL;
        long long c1 = a / q, c2 = a % q;
        long long d1 = b / q, d2 = b % q;
        long long res = c2 * d2 + (((c1 * d2) % (dzies/q)) * q) + (((c2 * d1) % (dzies / q)) * q);
        return res % dzies;
    }
}

void podnies_macierz(long long liczba, long long mod){
    if (liczba == 0){
        macierz[0][0] = 1;
        macierz[1][1] = 1;
        macierz[1][0] = 0;
        macierz[0][1] = 0;
    }
    else if (liczba == 1){
        for (int i = 0; i < 2; i++){
            for (int j = 0; j < 2; j++){
                macierz[i][j] = pierw[i][j];
            }
        }
    }
    else {
        podnies_macierz(liczba / 2, mod);
        long long macierz2[2][2];
        for (int i = 0; i < 2; i++){
            for (int j = 0; j < 2; j++){
                macierz2[i][j] = 0;
                for (int k = 0; k < 2; k++){
                    macierz2[i][j] += przemnoz_liczby(macierz[i][k], macierz[k][j]);
                    macierz2[i][j] %= mod;
                }
            }
        }
        for (int i = 0; i < 2; i++){
            for (int j = 0; j < 2; j++){
                macierz[i][j] = macierz2[i][j];
            }
        }
        if (liczba % 2 != 0){
            for (int i = 0; i < 2; i++){
                for (int j = 0; j < 2; j++){
                    macierz2[i][j] = 0;
                    for (int k = 0; k < 2; k++){
                        macierz2[i][j] += przemnoz_liczby(macierz[i][k], pierw[k][j]);
                        macierz2[i][j] %= mod;
                    }
                }
            }
            for (int i = 0; i < 2; i++){
                for (int j = 0; j < 2; j++){
                    macierz[i][j] = macierz2[i][j];
                }
            }
        }
    }
}

void przemnoz_vector(long long mod){
    long long tab[2];
    for (int j = 0; j < 2; j++){
        tab[j] = 0;
        for (int k = 0; k < 2; k++){
            tab[j] += przemnoz_liczby(macierz[k][j], vec[k]);
            tab[j] %= mod;
        }
    }
    vec[0] = tab[0];
    vec[1] = tab[1];
}

int main(){
    char t;
    while (true){
        scanf("%c",&t);
        if (t == '\n')
            break;
        r *= (long long)10;
        r += (t-'0');
        n++;
    }
    dzies = 1;
    for (int i = 0; i < n; i++){
        dzies *= 10;
    }
    if (n <= 4){
        pair <int,int> f = make_pair(0,1);
        long long r_tmp = r % dzies;
        if (n == 1){
            dlugosc_cyklu = 60;
        }
        else if (n == 2){
            dlugosc_cyklu = 300;
        }
        else {
            dlugosc_cyklu = dzies * 3 / 2;
        }
        for (int i = 0; i <= dlugosc_cyklu; i++){
            if (f.first == r_tmp){
                printf("%d\n", i + dlugosc_cyklu);
                return 0;
            }
            f = next_fib(f, dzies);
        }
        printf("NIE\n");
        return 0;
    }
    else {
        fibonacci(0);
        fibonacci(1);
        dlugosc_cyklu = 3 * dzies / 2;
        if ((tab[0].size() == 0) || (tab[1].size() == 0)){
            printf("NIE\n");
            return 0;
        }
        long long m = chinski_cykl[0] * chinski_cykl[1];
        long long dl = dlugosc_cyklu / m;
        pierw[0][0] = 0;
        pierw[0][1] = 1;
        pierw[1][0] = 1;
        pierw[1][1] = 1;
        podnies_macierz(100LL, dzies);
        for (int i = 0; i < tab[0].size(); i++){
            for (int j = 0; j < tab[1].size(); j++){
                long long tmp_a[2];
                tmp_a[0] = tab[0][i] % chinski_cykl[0];
                tmp_a[1] = tab[1][j] % chinski_cykl[1];
                long long roz = chinese_remainder(chinski_cykl, tmp_a, 2);
                roz = ((roz % m) + m) % m;
                //printf("%lld %lld %lld %lld %lld %lld %d %d\n", tab[0][i] % chinski_cykl[0], tab[1][j] % chinski_cykl[1], roz, dl, chinski_cykl[0], chinski_cykl[1], tab[0].size(), tab[1].size());
                vec[0] = 0;
                vec[1] = 1;
                podnies_macierz(roz, dzies);
                przemnoz_vector(dzies);
                podnies_macierz(m, dzies);
                for (int k = 0; k <= dl+1; k++){
                    if (vec[0] == r){
                        printf("%lld\n", dlugosc_cyklu + roz + k * m);
                        return 0;
                    }
                    przemnoz_vector(dzies);
                }
            }
        }
        printf("NIE\n");
        return 0;
    }
}
