#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 100010;
const ll INF = 1000000000000000LL;
int n;
ll p;
int a[N];
ll v[12];
ll fac[12];
// d(i, j, k) : smallest cost of the ith digit, number j, compress k times
ll d[12][12][12];
void init() {
for (int i = 0; i <= 9; i++)
for (int j = 0; j <= 9; j++)
for (int k = 0; k <= 9; k++)
d[i][j][k] = INF;
for (int i = 0; i <= 9; i++) {
for (int k = 0; k <= 9; k++)
d[i][0][k] = 0;
for (int j = 1; j <= 9; j++) {
d[i][j][0] = fac[i] * j * p;
for (int k = 1; k <= 9; k++) {
d[i][j][k] = d[i][j][k - 1];
for (int t = 0; t < j; t++) {
d[i][j][k] = min(d[i][j][k], d[i][t][k - 1] + v[j - t]);
d[i][j][k] = min(d[i][j][k], d[i][t][k] + fac[i] * (j - t) * p);
}
}
}
}
// cout << d[1][1][1] << endl;
// cout << d[0][3][0] << endl;
// cout << d[1][1][0] << endl;
// cout << d[0][3][1] << endl;
}
ll calc(int x) {
if (x == 1) {
return p;
}
int b[12];
int cnt = 0;
int t = x;
while (t) {
b[cnt++] = t % 10;
t /= 10;
}
ll o = p;
int mx = 0;
for (int i = 0; i < cnt; i++) {
o += v[b[i]];
mx = max(mx, b[i]);
}
ll ret = o;
// compress times
for (int i = 0; i <= 9; i++) {
ll now = p * i;
// for each digit
for (int j = 0; j < cnt; j++) {
now += d[j][b[j]][i];
}
if (now < ret)
ret = now;
}
return ret;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
fac[0] = 1;
for (int i = 1; i <= 9; i++)
fac[i] = fac[i - 1] * 10;
cin >> n >> p;
for (int i = 0; i < n; i++) {
string s;
cin >> s >> a[i];
}
for (int i = 0; i <= 9; i++) {
cin >> v[i];
}
init();
ll ans = 0;
for (int t = 0; t < n; t++) {
ans += calc(a[t]);
}
cout << ans << endl;
return 0;
}