#include <bits/stdc++.h>
using namespace std;
#define N 100005
typedef long long ll;
string k;
ll cnt[10],mp[10],s[10],ten[10];
set <ll> pos[10];
ll v[11],a[N],ans=1e18;
void check(int a,int b,int c,int d,int e){
int t=0;
for(int i=1;i<=9;i++) mp[i]=s[i]=0;
if(a) mp[++t]=a;
if(b) mp[++t]=b;
if(c) mp[++t]=c;
if(d) mp[++t]=d;
if(e) mp[++t]=e;
for(int i=1;i<=t;i++) s[mp[i]]++;
for(int i=1;i<=9;i++)
if(s[i]>cnt[i]) return;
int pre=0;
for(int i=1;i<=t;i++){
if(pre> *pos[mp[i]].rbegin()) return;
pre= *pos[mp[i]].upper_bound(pre);
}
ll num=0,sum=0;
for(int i=1;i<=t;i++) num+=mp[i]*ten[i];
for(int i=1;i<=9;i++) sum+=v[i]*(cnt[i]-s[i]);
ans=min(ans,num+sum);
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int c; cin>>c;
int T; cin>>T;
ten[1]=1;
for(int i=2;i<=6;i++) ten[i]=10*ten[i-1];
while(T--){
cin>>k;
int n=k.size(); k=" "+k;
ans=1e18;
for(int i=1;i<=9;i++) cnt[i]=0,pos[i].clear();
for(int i=1;i<=n;i++) a[i]=0;
for(int i=1;i<=n;i++){
int t=k[i]-'0';
a[i]=t;
cnt[t]++,pos[t].insert(i);
}
for(int i=1;i<=9;i++) cin>>v[i];
for(int a=0;a<=9;a++)
for(int b=0;b<=9;b++)
for(int c=0;c<=9;c++)
for(int d=0;d<=9;d++)
for(int e=0;e<=9;e++)
check(a,b,c,d,e);
cout<<ans<<endl;
}
return 0;
}