The code runs fine but the time limit is exceeding. Any help?
dic = {0 : 0}
for i in range(1,10):
dic[i] = 1
for i in range(10,27):
dic[i] = 2
for i in range(27,100):
dic[i] = 1
def F(n):
if (n in dic):
return dic[n]
elif (int(str(n)[:2])<=26):
dic[n] = F(n%(10**(len(str(n))-2))) + F(n%(10**(len(str(n))-1)))
return dic[n]
elif (int(str(n)[:2])>26):
dic[n] = F(n%(10**(len(str(n))-1)))
return dic[n]
n = int(input())
while n:
print(F(n))
n= int(input())