from lib_misc import is_palindrome


def get_digit_inverse(n):
    return int(str(n)[::-1])


def is_not_lychrel(n, iterations=50):
    for i in range(0, iterations):
        n = n + get_digit_inverse(n)
        if is_palindrome(n):
            return (i + 1)
    return 0


def euler_055():
    lychrels = [n for n in range(1, 10000) if is_not_lychrel(n) == 0]
    s = len(lychrels)
    return s


if __name__ == "__main__":
    print("e055.py: " + str(euler_055()))
    assert(euler_055() == 249)
