#include<bits/stdc++.h>
#define int long long
#define ll long long
using namespace std;
const int N = 1200005;
const ll inf = 100000000000000000ll;
string s;
int T;
int v[15], a[N];
//pii dp[20];//和和积 用了i位最小和
int nxt[N][10];
ll sum, ans;
ll r[N];
int n;
void dfss(int p, int pos)
{
if(p == 8)
{
ll t = sum, x = 0;
for(int i = p - 1; i >= 1; i --)
{
if(r[i])x = x * 10 + r[i], t -= v[r[i]];
}
t += x;
ans = min(ans, t);
return;
}
r[p] = 0;
dfss(p + 1, pos);
r[p] = 0;
for(int i = 1; i <= 9; i ++)
{
if(nxt[pos][i] > 0)
{
r[p] = i;
dfss(p + 1, nxt[pos][i] + 1);
r[p] = 0;
}
}
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
string c;
cin >> c >> T;
while(T --)
{
ans = inf;
cin >> s;
n = s.size();
memset(a, 0, sizeof a);
for(int i = 0; i < n; i ++)
{
a[i + 1] = (int)s[i] - '0';
}
memset(nxt, 0, sizeof nxt);
for(int i = n; i >= 1; i --)
{
nxt[i][a[i]] = i;
for(int j = 1; j <= 9; j ++)
{
if(j == a[i])continue;
nxt[i][j] = nxt[i + 1][j];
}
}
sum = 0;
for(int i = 1; i <= 9; i ++)
{
cin >> v[i];
}
for(int i = 1; i <= n; i ++)
{
sum = sum + v[a[i]];
}
ans = sum;
dfss(1, 1);
cout << ans << endl;
// return 0;
}
return 0;
}