1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <cstdio>
#include <string>

#define For(i, n) for (int i = 0; i < (n); i++)
#define ForD(i, n) for (int i = (n) - 1; i >= 0; i--)

typedef long long ll;

using namespace std;

#include <sstream>

ll from_string(std::string const & s) 
{
    std::stringstream ss(s);
    ll result;
    ss >> result;
    return result;
}


ll getNumWithoutLeadingZeros(string s)
{
	string _s;
	bool nonZero = false;
	
	For(i, s.size()) 
	{
		if (s[i] != '0') 
		{
			nonZero = true;
			_s += s[i];
		}
		else if (nonZero)
			_s += s[i];
	}
	
	return from_string(_s);
}

inline void solve(ll num, ll mod)
{
	const int MAX = 10 * 1000 * 1000;
	
	ll pre = 0;
	ll curr = 1;
	
	ll mod10 = mod * 10;
	
	For (i, MAX)
	{
		ll _curr = curr;
		curr += pre;
		pre = _curr % mod10;
		curr %= mod10;
	
		if (curr % mod == num)
		{
			cout << i + 2;
			return;
		}
	}
	
	cout << "NIE";
}

int main()
{
    string s;
	cin >> s;
	
	ll num = getNumWithoutLeadingZeros(s);
	ll mod = 1ll;
	
	For (i, s.size())
		mod *= 10ll;
	
	solve(num, mod);	
	return 0;
}