#include <bits/stdc++.h>
#define endl() putchar('\n')
#define space() putchar(' ')
#define int unsigned long long
using namespace std;
const int N = 2e5 + 5;
int n, ans, sum;
char a[N];
int val[N], nxt[N][10], first[10];
int num[N];
inline void init() {
for (int i = 0; i <= n; ++i)
for (int j = 0; j <= 9; ++ j) nxt[i][j] = 0;
for (int j = 0; j <= 9; ++ j) first[j] = 0;
for (int i = n; i >= 1; --i) {
first[a[i]] = i;
for (int j = 1; j <= 9; ++j) nxt[i][j] = nxt[i + 1][j];
nxt[i][a[i + 1]] = i + 1;
}
return ;
}
inline void calc() {
int res = sum - val[num[1]] - val[num[2]] - val[num[3]] - val[num[4]] - val[num[5]] - val[num[6]], now_id = first[num[1]], k = num[1];
if(!now_id) return ;
for (int i = 2; i <= 6; ++i) {
if(!num[i]) return void(ans = min(ans, res + k));
k = k * 10 + num[i];
now_id = nxt[now_id][num[i]];
if(!now_id) return ;
}
return void(ans = min(ans ,res + k));
}
signed main() {
ios::sync_with_stdio(0);
int id, T;
scanf("%lld%lld", &id, &T);
while (T--) {
scanf("%s", a + 1);
n = strlen(a + 1);
for (int j = 1; j <= 9; ++j) scanf("%lld", &val[j]);
sum = 0;
for (int i = 1; i <= n; ++i) a[i] ^= 48, sum += val[a[i]];
init();
ans = sum;
for (num[1] = 1; num[1] <= 9; ++num[1]) {
calc();
for (num[2] = 1; num[2] <= 9; ++num[2]) {
calc();
for (num[3] = 1; num[3] <= 9; ++num[3]) {
calc();
for (num[4] = 1; num[4] <= 9; ++num[4]) {
calc();
for (num[5] = 1; num[5] <= 9; ++num[5]) {
calc();
for (num[6] = 1; num[6] <= 9; ++num[6]) calc();
num[6] = 0;
}
num[5] = 0;
}
num[4] = 0;
}
num[3] = 0;
}
num[2] = 0;
} // 真没想到,有一天我会为了不写DP来写这种大粪。
printf("%lld\n", ans);
}
return 0;
}
/*
0
1
123
10 10 10 10 10 10 10 10 10
*/
qz