#include <iostream>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <stack>
using namespace std;
typedef long long lolo;
typedef unsigned long long ulolo;
const int MAXN=2e6+5,CSS=26;
int N;string S;lolo ans;
stack<char> sta;ulolo chax;
unordered_map<ulolo,int> mp;
unordered_set<ulolo> vhax;
int main(){
cin >> N >> S;S=" "+S;
for(int i = 0;i <= N;i++){
if(sta.empty()||S[i]!=sta.top()){sta.push(S[i]);chax=chax*CSS+S[i];}
else {sta.pop();chax=(chax-S[i])/CSS;}
mp[chax]++;vhax.insert(chax);
}
for(ulolo val : vhax)ans+=1ll*mp[val]*(mp[val]-1)/2;
cout << ans;
return 0;
}