#pragma region Header #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define X first #define Y second #define mp make_pair #define fid(n) for (int i = (n)-1;i>=0;i--) #define fjd(n) for (int j = (n)-1;j>=0;j--) #define fkd(n) for (int k = (n)-1;k>=0;k--) #define fid1(n) for (int i = (n)-1;i>=1;i--) #define fjd1(n) for (int j = (n)-1;j>=1;j--) #define fkd1(n) for (int k = (n)-1;k>=1;k--) #define fi(n) for (int i = 0;i<(n);i++) #define fj(n) for (int j = 0;j<(n);j++) #define fk(n) for (int k = 0;k<(n);k++) #define fi1(n) for (int i = 1;i<(n);i++) #define fj1(n) for (int j = 1;j<(n);j++) #define fk1(n) for (int k = 1;k<(n);k++) #define finc(a,b,c) for (int a = b; a < c; a++) #define fdec(a,b,c) for (int a = b; a >= c; a--) #define All(x) (x).begin(),(x).end() #define rAll(x) (x).rbegin(),(x).rend() typedef long long ll; typedef unsigned long long ull; typedef long double ld; using namespace std; const ll linf = (1LL << 62) - 1; const int inf = 1010101043; void pause(bool a = true) { #ifdef _DEBUG cerr << "PAUSE" << endl; string s; cin >> s; #endif } ld PI = acos(-1); templateinline const T sqr(const T & x) { return x*x; } templateinline T dist(pair a, pair b) { return sqrt(sqr(a.X - b.X) + sqr(a.Y - b.Y)); } templateinline T prod(pair a, pair b, pair c = mp(0, 0)) { return (a.X - c.X)*(b.Y - c.Y) - (a.Y - c.Y)*(b.X - c.X); } templateinline T prodv(pair a, pair b, pair c = mp(0, 0)) { return (a.X - c.X)*(b.X - c.X) + (a.Y - c.Y)*(b.Y - c.Y); } templateinline bool intriangle(pair a, pair b, pair c, pair d) { return (abs(prod(a, b, c)) == abs(prod(a, b, d)) + abs(prod(a, c, d)) + abs(prod(b, c, d))); } ll gcd(ll a, ll b) { while (b) { a %= b; swap(a, b); }return a; } ll lcm(ll a, ll b) { return a*b / gcd(a, b); } ll popcnt(ll mask) { ll cnt = 0; while (mask) cnt += mask & 1, mask >>= 1; return cnt; } ull powi(ull a, ull b, ll mod = 1000000007) { if (b < 2) return b ? a : 1; return (powi((a*a) % mod, b / 2, mod)*(b % 2 ? a : 1LL)) % mod; } template bool maxz(T & a, T b) { if (a < b) { a = b; return true; } return false; } template bool minz(T & a, T b) { if (a > b) { a = b; return true; } return false; } template bool maxze(T & a, T b) { if (a <= b) { a = b; return true; } return false; } template bool minze(T & a, T b) { if (a >= b) { a = b; return true; } return false; } ll mod7 = 1000000007; ll mod9 = 1000000009; bool isprime(ll n) { if (n < 2) return 0; for (ll i = 2; i*i <= n; i++) if (n%i == 0) return 0; return 1; } #pragma endregion int main() { ios::sync_with_stdio(false);cin.tie(0); #ifdef _DEBUG ifstream cin("test.txt"); #endif vector h(26); fi(26) cin >> h[i]; string s; cin >> s; ll ans = 0; fi(s.length()) ans = max(ans, (ll)s.length()*h[s[i] - 'a']); cout << ans << endl; pause(0); return 0; }