Solução de força não bruta para projetar Euler 25

Problema no Projeto Euler 25:

A sequência de Fibonacci é definida pela relação de recorrência:

Fn = Fn-1 + Fn-2, onde F1 = 1$8 = F9A sequência de Fibonacci é definida pela relação de recorrência:10 = F11n-112 + F13n-214, onde F151 = 116 e F17 = 1. Portanto, os 12 primeiros termos serão F18$10 = 55, F11 = 89, F12 = 144

O 12º termo, F12, é o primeiro termo a conter três dígitos.

Qual é o primeiro termo na sequência de Fibonacci que contém 1000 dígitos?

Eu fiz uma solução de força bruta em Python, mas leva uma eternidade para calcular a solução real. Alguém pode sugerir uma solução de força não bruta?

def Fibonacci(NthTerm):
    if NthTerm == 1 or NthTerm == 2:
        return 1 # Challenge defines 1st and 2nd term as == 1
    else:  # recursive definition of Fib term
        return Fibonacci(NthTerm-1) + Fibonacci(NthTerm-2)

FirstTerm = 0 # For scope to include Term in scope of print on line 13
for Term in range(1, 1000): # Arbitrary range
    FibValue = str(Fibonacci(Term)) # Convert integer to string for len()
    if len(FibValue) == 1000:
        FirstTerm = Term
        break # Stop there
    else:
        continue # Go to next number
print "The first term in the\nFibonacci sequence to\ncontain 1000 digits\nis the", FirstTerm, "term."

questionAnswers(8)

yourAnswerToTheQuestion