




def 		lowerCamelCase__       (						_A				):







	'''simple docstring'''





	snake_case_						       =	set()
	# To detect a back edge, keep track of vertices currently in the recursion stack
	snake_case_						       =	set()
	return any(
	    node not in visited and depth_first_search(_A	,      _A	,      _A	,      _A				)
	    for node in graph				)


def 		lowerCamelCase__       (						_A	,      _A	,      _A	,      _A				):







	'''simple docstring'''





	visited.add(_A				)
	rec_stk.add(_A				)

	for node in graph[vertex]:
		if node not in visited:
			if depth_first_search(_A	,      _A	,      _A	,      _A				):
				return True
		elif node in rec_stk:
			return True

		# The node needs to be removed from recursion stack before function ends
	rec_stk.remove(_A				)
	return False


if __name__ == "__main__":
		from doctest import testmod

		testmod()

"""simple docstring"""


from collections.abc import Generator






def      __UpperCAmelCase       (      ):







  """simple docstring"""
  _UpperCAmelCase			,					_UpperCAmelCase    			=   0, 1
  while True:
    _UpperCAmelCase			,					_UpperCAmelCase    			=   b, a + b
    yield b






def      __UpperCAmelCase       (      lowercase = 10_00		):







  """simple docstring"""
  _UpperCAmelCase    			=   1
  _UpperCAmelCase    			=   fibonacci_generator()
  while len(str(next(lowercase		)		)		) < n:
    answer += 1
  return answer + 1


if __name__ == "__main__":
    print(solution(int(str(input()).strip())))
