/* ***********************************************
Author :CKboss
Created Time :2015年03月05日 星期四 16时32分55秒
File Name :D_.cpp
************************************************ */
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <queue>
#include <set>
#include <map>
using namespace std;
typedef long long int LL;
const int maxn=100100;
int n;
LL val[30],presum[maxn];
char str[maxn];
map<LL,int> G[30];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
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'];
}
LL ans=0;
G[str[0]-'a'][val[str[0]-'a']]++;
for(int i=1;i<n;i++)
{
int c=str[i]-'a';
LL pn=presum[i-1]; LL pr=presum[i];
ans+=G[c][pn];
G[c][pr]++;
}
cout<<ans<<endl;
return 0;
}