#include <bits/stdc++.h>
using namespace std;
#define REP(i, n) for (int i = 0, _n = (n); i < _n; ++i)
#define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; ++i)
#define FORD(i, b, a) for (int i = (b), _a = (a); i >= _a; --i)
#define file(name) if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
// end of template
const int MAX_LR = 202;
const int MAX_X = 22;
const int MAX_K = 1e4 + 4;
const int MOD = 1e9 + 7;
string L, R, X;
int K, v[MAX_X], kmp[MAX_X], nxt[MAX_X][10];
void init(void) {
cin >> L >> R >> X >> K;
REP(i, X.size()) cin >> v[i + 1];
}
void add(int &a, int b) {
a += b;
if (a >= MOD) a -= MOD;
}
int dp[MAX_LR][MAX_X][MAX_K][2];
int solve(const string &R) {
memset(dp, 0, sizeof(dp));
dp[0][0][0][0] = 1;
REP(i, R.size()) REP(suff, X.size() + 1) REP(beauty, K + 1) REP(less_r, 2) if (dp[i][suff][beauty][less_r]) {
REP(digit, less_r ? 10 : R[i] - '0' + 1) {
int new_suff = nxt[suff][digit];
int new_beauty = beauty + v[new_suff];
int new_less_r = less_r || digit < R[i] - '0';
if (new_beauty <= K) add(dp[i + 1][new_suff][new_beauty][new_less_r], dp[i][suff][beauty][less_r]);
}
}
int res = 0;
REP(suff, X.size() + 1) REP(beauty, K + 1) REP(less_r, 2) add(res, dp[R.size()][suff][beauty][less_r]);
return res;
}
void process(void) {
kmp[0] = 0;
nxt[0][X[0] - '0'] = 1;
FOR(i, 1, X.size()) {
kmp[i] = i == 1 ? 0 : nxt[kmp[i - 1]][X[i - 1] - '0'];
v[i] += v[kmp[i]];
REP(j, 10) nxt[i][j] = j == X[i] - '0' ? i + 1 : nxt[kmp[i]][j];
}
FORD(i, (int) L.size() - 1, 0) {
--L[i];
if (L[i] < '0') L[i] += 10;
else break;
}
cout << (solve(R) - solve(L) + MOD) % MOD << '\n';
}
int main(void) {
ios_base::sync_with_stdio(false); cin.tie(nullptr); // cout.tie(nullptr);
file("badnum");
init();
process();
return (0^0);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSAgICAgICAgICAgUkVQKGksIG4pICBmb3IgKGludCBpID0gMCwgX24gPSAobik7IGkgPCBfbjsgKytpKQojZGVmaW5lICAgICAgICBGT1IoaSwgYSwgYikgIGZvciAoaW50IGkgPSAoYSksIF9iID0gKGIpOyBpIDw9IF9iOyArK2kpIAojZGVmaW5lICAgICAgIEZPUkQoaSwgYiwgYSkgIGZvciAoaW50IGkgPSAoYiksIF9hID0gKGEpOyBpID49IF9hOyAtLWkpIAojZGVmaW5lICAgICAgICAgIGZpbGUobmFtZSkgIGlmIChmb3BlbihuYW1lIi5pbnAiLCAiciIpKSB7IGZyZW9wZW4obmFtZSIuaW5wIiwgInIiLCBzdGRpbik7IGZyZW9wZW4obmFtZSIub3V0IiwgInciLCBzdGRvdXQpOyB9CgovLyBlbmQgb2YgdGVtcGxhdGUKCmNvbnN0IGludCBNQVhfTFIgPSAyMDI7CmNvbnN0IGludCBNQVhfWCA9IDIyOwpjb25zdCBpbnQgTUFYX0sgPSAxZTQgKyA0Owpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKCnN0cmluZyBMLCBSLCBYOwppbnQgSywgdltNQVhfWF0sIGttcFtNQVhfWF0sIG54dFtNQVhfWF1bMTBdOwoKdm9pZCBpbml0KHZvaWQpIHsKCWNpbiA+PiBMID4+IFIgPj4gWCA+PiBLOwoJUkVQKGksIFguc2l6ZSgpKSBjaW4gPj4gdltpICsgMV07Cn0KCnZvaWQgYWRkKGludCAmYSwgaW50IGIpIHsKCWEgKz0gYjsKCWlmIChhID49IE1PRCkgYSAtPSBNT0Q7Cn0KCmludCBkcFtNQVhfTFJdW01BWF9YXVtNQVhfS11bMl07CgppbnQgc29sdmUoY29uc3Qgc3RyaW5nICZSKSB7CgltZW1zZXQoZHAsIDAsIHNpemVvZihkcCkpOwoJZHBbMF1bMF1bMF1bMF0gPSAxOwoJUkVQKGksIFIuc2l6ZSgpKSBSRVAoc3VmZiwgWC5zaXplKCkgKyAxKSBSRVAoYmVhdXR5LCBLICsgMSkgUkVQKGxlc3NfciwgMikgaWYgKGRwW2ldW3N1ZmZdW2JlYXV0eV1bbGVzc19yXSkgewoJCVJFUChkaWdpdCwgbGVzc19yID8gMTAgOiBSW2ldIC0gJzAnICsgMSkgewoJCQlpbnQgbmV3X3N1ZmYgPSBueHRbc3VmZl1bZGlnaXRdOwoJCQlpbnQgbmV3X2JlYXV0eSA9IGJlYXV0eSArIHZbbmV3X3N1ZmZdOwoJCQlpbnQgbmV3X2xlc3NfciA9IGxlc3NfciB8fCBkaWdpdCA8IFJbaV0gLSAnMCc7CgkJCWlmIChuZXdfYmVhdXR5IDw9IEspIGFkZChkcFtpICsgMV1bbmV3X3N1ZmZdW25ld19iZWF1dHldW25ld19sZXNzX3JdLCBkcFtpXVtzdWZmXVtiZWF1dHldW2xlc3Nfcl0pOwoJCX0KCX0KCWludCByZXMgPSAwOwoJUkVQKHN1ZmYsIFguc2l6ZSgpICsgMSkgUkVQKGJlYXV0eSwgSyArIDEpIFJFUChsZXNzX3IsIDIpIGFkZChyZXMsIGRwW1Iuc2l6ZSgpXVtzdWZmXVtiZWF1dHldW2xlc3Nfcl0pOwoJcmV0dXJuIHJlczsKfQoKdm9pZCBwcm9jZXNzKHZvaWQpIHsKCWttcFswXSA9IDA7CglueHRbMF1bWFswXSAtICcwJ10gPSAxOwoJRk9SKGksIDEsIFguc2l6ZSgpKSB7CgkJa21wW2ldID0gaSA9PSAxID8gMCA6IG54dFtrbXBbaSAtIDFdXVtYW2kgLSAxXSAtICcwJ107CgkJdltpXSArPSB2W2ttcFtpXV07CgkJUkVQKGosIDEwKSBueHRbaV1bal0gPSBqID09IFhbaV0gLSAnMCcgPyBpICsgMSA6IG54dFtrbXBbaV1dW2pdOwoJfQoJRk9SRChpLCAoaW50KSBMLnNpemUoKSAtIDEsIDApIHsKCQktLUxbaV07CgkJaWYgKExbaV0gPCAnMCcpIExbaV0gKz0gMTA7CgkJZWxzZSBicmVhazsKCX0KCWNvdXQgPDwgKHNvbHZlKFIpIC0gc29sdmUoTCkgKyBNT0QpICUgTU9EIDw8ICdcbic7Cn0KCmludCBtYWluKHZvaWQpIHsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKG51bGxwdHIpOyAvLyBjb3V0LnRpZShudWxscHRyKTsKCWZpbGUoImJhZG51bSIpOwoJaW5pdCgpOwoJcHJvY2VzcygpOwoJcmV0dXJuICgwXjApOwp9