#include "bits/stdc++.h" using namespace std; #define rep(i,n) for(int i=0;i PI; typedef vector VI; const LL MOD = 1000000007LL; LL solve(string S, bool less) { LL dp[2][2][2][3][8] = { 0 }; //j:Sより小さいか k:3を含んでいるか l:mod 3 m:mod 8 dp[0][0][0][0][0] = 1; int now = 0; rep(i, S.size()) { rep(j, 2) rep(k, 2) rep(l, 3) rep(m, 8) { rep(d, 10) { if (!j && (S[i] - '0') < d) break; (dp[now ^ 1][j | (d < (S[i] - '0'))][k | (d == 3)][(l * 10 + d) % 3][(m * 10 + d) % 8] += dp[now][j][k][l][m]) %= MOD; } } rep(j, 2) rep(k, 2) rep(l, 3) rep(m, 8) { dp[now][j][k][l][m] = 0; } now ^= 1; } LL ans = 0; rep(j, 2) rep(k, 2) rep(l, 3) rep(m, 8) { if (less && !j) continue; if ((k || l==0) && m!=0) (ans += dp[now][j][k][l][m]) %= MOD; } return ans; } int main() { string A, B; cin >> A >> B; cout << (solve(B, 0) - solve(A, 1) + MOD) % MOD << endl; }