수학을 잘하는 랑이는 오늘 집사에게 수를 이용한 게임을 배웠다. 이 게임은 양의 정수 N을 초깃값으로 시작한다. N의 각 자릿수를 모두 더한 값을 A, 각 자릿수를 모두 곱한 값을 B라고 할 때, A와 B를 순서대로 이어 붙인 수를 f(N)으로 나타낸다. 예를 들어 N=12352라면 각 자릿수의 합은 1+2+3+5+2=13, 각 자릿수의 곱은 1×2×3×5×2=60이므로 f(N)은 이 둘을 이어 붙인 1360이 된다. 1360에 같은 연산을 적용하면 1+3+6+0=10, 1×3×6×0=0이므로 f(1360)=100이다. 100에 적용하면 f(100)=10이고, 10에 적용하면 f(10)=10이다. 이 게임에서는 N이 주어졌을 때 f(N), f(f(N)), f(f(f(N))), ⋯를 계속 구해 가면서 언젠가 f(x)=x를 만족하는 x가 나오는지 알아내는 것이 중요하다.
N에 연산을 계속 적용해서 x=f(x)가 되는 x가 나오면 g(N)=1, 나오지 않으면 g(N)=0이라고 하자. 단, N,f(N),f(f(N)),⋯ 중 100000보다 큰 수가 하나라도 있으면 계산하기 어려우므로 g(N)=−1이라고 한다. 예를 들어 N=1이면 f(1)=11, f(11)=21, f(21)=32, f(32)=56, f(56)=1130, f(1130)=50, f(50)=50이다. 50에서 f(x)=x가 나오므로 g(1)=1이다.
양의 정수 L, R (L≤R)이 주어질 때, g(L)+g(L+1)+⋯+g(R)의 값을 구하는 프로그램을 작성하시오.