#include <bits/stdc++.h>
using namespace std;
const int maxn = 100100;
int n;
long long int val[30], presum[maxn];
char str[maxn];
map<long long int, int> G[30];
int main() {
  for (int i = 0; i < 26; i++) cin >> val[i];
  cin >> str;
  n = strlen(str);
  for (int i = 0; i < n; i++) {
    if (i == 0)
      presum[0] = val[str[i] - 'a'];
    else
      presum[i] = presum[i - 1] + val[str[i] - 'a'];
  }
  long long int ans = 0;
  G[str[0] - 'a'][val[str[0] - 'a']]++;
  for (int i = 1; i < n; i++) {
    int c = str[i] - 'a';
    long long int pn = presum[i - 1];
    long long int pr = presum[i];
    ans += G[c][pn];
    G[c][pr]++;
  }
  cout << ans << endl;
  return 0;
}
