Link:http://codeforces.com/contest/519/problem/D
#include <iostream>
#include <vector>
#include <map>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define si(a) scanf("%d",&a)
using namespace std;
char str[100005];
int ara[26],len;
long long sum[100005];
int main()
{
int i;
for(i=0;i<26;i++)
si(ara[i]);
getchar();
gets(str+1);
len=strlen(str+1);
sum[0]=0;
for(i=1;i<=len;i++)
sum[i]=sum[i-1]+ara[str[i]-'a'];
long long total=0;
for(i=0;i<26;i++){
map<long long,int> data;
for(int j=1;j<=len;j++)
if(str[j]-'a'==i){
total+=data[sum[j-1]];
data[sum[j]]++;
}
}
cout<<total<<endl;
return 0;
}
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#define LL long long
using namespace std;
int a[27];
__int64 ans,sum[100010];
char s[100010];
int len;
int main()
{
int i,j;
for(i=0;i<26;i++)
{
//cin>>a[i];
scanf("%d",&a[i]);
}
scanf("%s",s);
//cin>>s;
len=strlen(s);
sum[0]=a[s[0]-'a'];
for(i=1;i<len;i++)
{
sum[i]=sum[i-1]+a[s[i]-'a'];
}
ans=0;
for(i=0;i<len-1;i++)
{
for(j=i+1;j<len;j++)
{
if(s[i]==s[j]&&sum[j-1]-sum[i]==0)
{
ans++;
}
}
}
//cout<<ans<<endl;
printf("%I64d\n",ans);
return 0;
}