#include using namespace std; const long long int MOD = 1000000007LL; long long int dp[200010][3][8][2][2]; void fastadd(long long int &A, long long int B) { A += B; if(A > MOD) A -= MOD; } void fastsub(long long int &A, long long int B) { A = A - B + MOD; if(A > MOD) A -= MOD; } long long int solve(string s, int P, bool include_equal) { int d = 0; while(P % 10 == 0) d++, P /= 10; int N = s.length(); memset(dp, 0, sizeof(dp)); dp[0][0][0][0][0] = 1; for(int i=0; i= 1) fastsub(maybe_ng, dp[N-d][mod3][0][inc3][1] - (mod3 == 0 && inc3 == 0)); if(include_equal) { fastadd(maybe_ng, dp[N][mod3][0][inc3][0]); if(N - d >= 1) fastsub(maybe_ng, dp[N-d][mod3][0][inc3][0]); } } } return (ret + maybe_ng - 1) % MOD; } int main() { string A, B; int P; cin >> A >> B >> P; long long int rr = solve(B, P, 1); long long int rl = solve(A, P, 0); // printf("rr = %lld, rl = %lld\n", rr, rl); cout << (rr - rl + MOD) % MOD << endl; return 0; }