#include <bits/stdc++.h>
#define int long long
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define fdn(i,r,l) for(int i=(r);i>=(l);i--)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
typedef double db;
typedef __int128 i128;
std::mt19937 rnd(std::chrono::steady_clock::now().time_since_epoch().count());
std::mt19937_64 rnd64(std::chrono::steady_clock::now().time_since_epoch().count());
void solve()
{
string s;
cin>>s;
int n=s.size();s=' '+s;
vector<int> N(n+1,0),cnt(11,0),v(11,0);
rep(i,1,9) cin>>v[i];
rep(i,1,n) N[i]=s[i]-'0',cnt[N[i]]++;
ll ans=1ll<<59;
rep(i,1,1e5)
{
vector<int> tcnt(11,0),acnt(11,0);
int ti=i;
while(ti) tcnt[ti%10]++,ti/=10;
if(tcnt[0]) continue;
bool fg=0;
rep(j,1,9)
if(tcnt[j]>cnt[j]) fg=1;
else acnt[j]=cnt[j]-tcnt[j];
if(fg) continue;
ll tans=i;
rep(j,1,9) tans+=v[j]*acnt[j];
ans=min(ans,tans);
}
ll tans=0;
rep(i,1,9) tans+=v[i]*cnt[i];
ans=min(ans,tans);
cout<<ans<<endl;
}
signed main()
{
#ifndef ONLINE_JUDGE
freopen("in.in","r",stdin);
freopen("out.out","w",stdout);
#endif
ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
int X,T;
cin>>X>>T;
while(T--) solve();
}