Can anybody tell me how can i avoid the overflow of this program?

from math import sqrt

f=lambda n: sum([int(i)*int(i) for i in str(n)])

L=[]

for n in range(0,10**20):

if sqrt(f(n))%1==0:# == float(int(sqrt(f(n)))):

L.append(n)

L.sort()

print "Número de quadrados perfeitos na lista:",len(L)

print L

y= lambda L: reduce(lambda x,y: x+y,L)

print y(L)