#include<bits/stdc++.h>
using namespace std;
#define int long long
int c=0,t,v[100005],ans=0x3f3f3f,sum,a[100005],mp[11][100005],lenn[11],sz;
int vis[1000000];
string s;
void dfs(int x,int num){
if(num>600000)return ;
if(vis[num])return ;
vis[num]=1;
for(int i=1;i<=9;i++){
if(mp[i][lenn[i]]>x){
int l=1,r=lenn[i],mid=(l+r)/2;
while(l<r){
mid=(l+r)/2;
if(mp[i][mid]>x)r=mid;
else l=mid+1;
}
dfs(mp[i][l],num*10+i);
}
}
}
signed main(){
cin>>c;
cin>>t;
while(t--){
cin>>s;
sz=s.size();
ans=1e15+6;
sum=0;
memset(vis,0,sizeof vis);
memset(mp,0,sizeof mp);
memset(lenn,0,sizeof lenn);
for(int i=1;i<=9;i++)cin>>v[i];
for(int i=1;i<=sz;i++){
a[i]=s[i-1]-'0';
sum+=v[a[i]];
mp[a[i]][++lenn[a[i]]]=i;
}
dfs(0,0);
for(int i=1;i<=600000;i++){
if(vis[i]){
int sum2=sum,j=i;
while(j){
sum2-=v[j%10];
j/=10;
}
sum2+=i;
ans=min(sum2,ans);
}
}
cout<<ans<<"\n";
}
return 0;
}