/*input 3 1 2 3 */ #include <bits/stdc++.h> #include <stdlib.h> #include <time.h> using namespace std; long long mod=1e9+7; typedef long long unsigned llu; typedef long long int lld; typedef long ld; #define rep(i,a,n) for(long long int i = (a); i <= (n); ++i) #define repI(i,a,n) for(int i = (a); i <= (n); ++i) #define repD(i,a,n) for(long long int i = (a); i >= (n); --i) #define repDI(i,a,n) for(int i = (a); i >= (n); --i) #define pb push_back #define mp make_pair #define ff first #define ss second #define sc(a) scanf("%lld",&a) #define sc2(a,b) scanf("%lld%lld",&a,&b) #define sc3(a,b,c) scanf("%lld%lld%lld",&a,&b,&c) #define scd(a) scanf("%d",&a) #define scd2(a,b) scanf("%d%d",&a,&b) #define scd3(a,b,c) scanf("%d%d%d",&a,&b,&c) #define scf(a) scanf("%lf",&a) #define scf2(a,b) scanf("%lf%lf",&a,&b) #define scf3(a,b,c) scanf("%lf%lf%lf",&a,&b,&c) #define prL(a) printf("%lld\n",a) #define prS(a) printf("%lld ",a) #define prdL(a) printf("%d\n",a) #define prdS(a) printf("%d ",a) #define prfL(a) printf("%lf\n",a) #define prfS(a) printf("%lf ",a) #define popcount __builtin_popcountll #define swap(a,b,t) t=a;a=b;b=t typedef pair<lld,lld> PA; #define lim 1000003 #define lim2 1003 inline lld sqr(lld x) { return x * x; } // map<pair<PA,PA>,lld> M; // map<string,lld> M,My; // map<lld,lld> M; // deque<PA> Q; // map<lld,lld>::iterator it; // std::ios::sync_with_stdio(false); // multiset<lld> S; // set<lld> S; // vector<lld> V[lim]; // bool dp[1002][12][12]; // priority_queue<PA> Q; // lld A[lim],B[lim],C[lim]; lld A[lim],B[lim]; // string S[lim],R[lim]; // char S[lim]; // lld X[lim],Y[lim]; // PA P[lim]; // lld dp[1<<18]; lld one,zero,ansR,numNodes; int main(){ // std::ios::sync_with_stdio(false); lld T,i,j,h,l,r,k,s,b,c,a,d,q,p,n,m,w,x,y,v,z,t,curr,prev,sum,ans,pos,val,countA,secondMin,indicator; rep(i,0,25) sc(A[i]); string S; cin>>S; n=S.size(); t=0; rep(i,0,n-1) t=max(t,A[S[i]-'a']); prL(t*n); return 0; }