def f(n,A=[],l=0):l=l or len(`n`)/2;return-(n in A)or-~f(n*n/10**l%100**l,A+[n],l) for n in 24, 82, 123456, 8989, 789987: print '%6d: %d' % (n, f(n))