수학을 잘하는 랑이는 오늘 집사에게 수를 이용한 게임을 배웠다. 이 게임은 양의 정수 N을 초깃값으로 가진 상태로 시작한다. N의 각 자릿수를 모두 더한 값을 A, N의 각 자릿수를 모두 곱한 값을 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이고, 이 결과에 다시 적용한다면 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)),⋯ 중 100,000보다 큰 수가 하나라도 존재한다면 계산하기 어려우므로 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(L+2)+⋯+g(R−1)+g(R)의 값을 구하는 프로그램을 작성하시오.
첫째 줄에 양의 정수 L, R이 공백으로 구분되어 주어진다. (1≤L≤R≤100,000)
g(L)+g(L+1)+g(L+2)+⋯+g(R−1)+g(R)을 출력한다.