//TLE //桁DP #include #include #include #include #include #include #include #include #include #include using namespace std; #define MOD 1000000007 int P; long long func(string& s){ //dp[mod 3*P][lower | has3] long long my_mod = 3*P; vector> dp (my_mod, vector(4, 0)); dp[0][0] = 1; for(int i=0; i> dp_(my_mod, vector(4, 0)); for(int mod3P=0; mod3Ps[i]-'0') continue; int next_state = (lower || d=MOD) dp_next -= MOD; } } swap(dp, dp_); } long long ret = 0; for(int mod3P=0; mod3P=MOD) ret -= MOD; } return ret; } int main(){ string a,b; cin >> a >> b; cin >> P; long long ans = 0; ans += func(b); ans -= func(a); ans = (ans+MOD)%MOD; int mod3 = 0; int has3 = 0; int modP = 0; for(int i=0; i