mod = 10 ** 9 + 7 A, B = input().split() N = len(B) A = A.zfill(N) dp = [[[[[[0]*8 for _ in range(2)] for _ in range(3)] for _ in range(2)] for _ in range(2)] for _ in range(N+1)] dp[0][0][0][0][0][0] = 1 for i in range(N): na = int(A[i]) nb = int(B[i]) for ja in range(2): for jb in range(2): for k in range(3): for l in range(2): for m in range(8): for d in range(10): ni = i + 1 nja = ja njb = jb nk = (k + d) % 3 nl = l nm = (10 * m + d) % 8 if nja == 0: if d < na: continue if d > na: nja = 1 if njb == 0: if d > nb: continue if d < nb: njb = 1 if d == 3: nl = 1 dp[ni][nja][njb][nk][nl][nm] += dp[i][ja][jb][k][l][m] dp[ni][nja][njb][nk][nl][nm] %= mod ans = 0 for ja in range(2): for jb in range(2): for k in range(3): for l in range(2): if k == 0 or l == 1: for m in range(1, 8): ans += dp[N][ja][jb][k][l][m] ans %= mod print(ans)