#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
string s;
cin >> n;
cin >> s;
vector<pair<char, long long> > b;
b.push_back({'-', 0});
{
int cnt = 0;
for(int i = 0; i < n; i++){
if(i != 0){
if(s[i] != s[i - 1]){
b.push_back({s[i - 1], cnt});
cnt = 0;
}
}
cnt++;
}
b.push_back({s[s.size() - 1], cnt});
}
n = b.size();
vector<long long> pref_sum(n + 1, 0);
vector<vector<long long> > pref_sum1(n + 1, vector<long long>(3, 0));
long long ans = 0;
vector<long long> lt(3, 0);
vector<long long> ass(3, -1);
for(int i = 1; i < n; i++){
pref_sum[i] += pref_sum[i - 1];
pref_sum1[i][i % 2] += pref_sum1[i - 1][i % 2];
pref_sum1[i][(i + 1) % 2] = pref_sum1[i - 1][(i + 1) % 2];
if(i >= 3){
if(b[i].first == b[i - 2].first){
lt[i % 2] = i;
}
}
if(i != 1){
long long max_pos = 0;
max_pos = max(max_pos, ass[(i + 1) % 2] - 1);
max_pos = max(max_pos, lt[i % 2] - 1);
//cout << i << " " << max_pos << " " << pref_sum[i] << " " << pref_sum1[i][i % 2] << " " << endl;
if(max_pos >= 1){
ans += (b[i].second * (pref_sum[max_pos]));
ans += (b[i].second * (pref_sum1[i][(i + 1) % 2] - pref_sum1[max_pos][(i + 1) % 2]));
}
else{
ans += (b[i].second * pref_sum1[i][(i + 1) % 2]);
}
}
if(b[i].second > 1){
ass[i % 2] = i;
}
pref_sum[i] += b[i].second;
pref_sum1[i][i % 2] += b[i].second;
}
/* for(int i = 1; i < n; i++){
cout << pref_sum[i] << " ";
}
cout << endl;*/
cout << ans << endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1haW4oKXsKICAgICAgICBpbnQgbjsKICAgICAgICBzdHJpbmcgczsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICBjaW4gPj4gczsKICAgICAgICB2ZWN0b3I8cGFpcjxjaGFyLCBsb25nIGxvbmc+ID4gYjsKICAgICAgICBiLnB1c2hfYmFjayh7Jy0nLCAwfSk7CiAgICAgICAgewogICAgICAgIGludCBjbnQgPSAwOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgICAgICAgICAgaWYoaSAhPSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoc1tpXSAhPSBzW2kgLSAxXSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGIucHVzaF9iYWNrKHtzW2kgLSAxXSwgY250fSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNudCsrOwogICAgICAgIH0KICAgICAgICBiLnB1c2hfYmFjayh7c1tzLnNpemUoKSAtIDFdLCBjbnR9KTsKICAgICAgICB9CiAgICAgICAgbiA9IGIuc2l6ZSgpOwogICAgICAgIHZlY3Rvcjxsb25nIGxvbmc+IHByZWZfc3VtKG4gKyAxLCAwKTsKICAgICAgICB2ZWN0b3I8dmVjdG9yPGxvbmcgbG9uZz4gPiBwcmVmX3N1bTEobiArIDEsIHZlY3Rvcjxsb25nIGxvbmc+KDMsIDApKTsKICAgICAgICBsb25nIGxvbmcgYW5zID0gMDsKICAgICAgICB2ZWN0b3I8bG9uZyBsb25nPiBsdCgzLCAwKTsKICAgICAgICB2ZWN0b3I8bG9uZyBsb25nPiBhc3MoMywgLTEpOwogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPCBuOyBpKyspewogICAgICAgICAgICAgICAgcHJlZl9zdW1baV0gKz0gcHJlZl9zdW1baSAtIDFdOwogICAgICAgICAgICAgICAgcHJlZl9zdW0xW2ldW2kgJSAyXSArPSBwcmVmX3N1bTFbaSAtIDFdW2kgJSAyXTsKICAgICAgICAgICAgICAgIHByZWZfc3VtMVtpXVsoaSArIDEpICUgMl0gPSBwcmVmX3N1bTFbaSAtIDFdWyhpICsgMSkgJSAyXTsKICAgICAgICAgICAgICAgIGlmKGkgPj0gMyl7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJbaV0uZmlyc3QgPT0gYltpIC0gMl0uZmlyc3QpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx0W2kgJSAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKGkgIT0gMSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBtYXhfcG9zID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3BvcyA9IG1heChtYXhfcG9zLCBhc3NbKGkgKyAxKSAlIDJdIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heF9wb3MgPSBtYXgobWF4X3BvcywgbHRbaSAlIDJdIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vY291dCA8PCBpIDw8ICIgIiA8PCBtYXhfcG9zIDw8ICIgIiA8PCBwcmVmX3N1bVtpXSA8PCAiICIgPDwgcHJlZl9zdW0xW2ldW2kgJSAyXSA8PCAiICIgPDwgZW5kbDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYobWF4X3BvcyA+PSAxKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnMgKz0gKGJbaV0uc2Vjb25kICogKHByZWZfc3VtW21heF9wb3NdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zICs9IChiW2ldLnNlY29uZCAqIChwcmVmX3N1bTFbaV1bKGkgKyAxKSAlIDJdIC0gcHJlZl9zdW0xW21heF9wb3NdWyhpICsgMSkgJSAyXSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zICs9IChiW2ldLnNlY29uZCAqIHByZWZfc3VtMVtpXVsoaSArIDEpICUgMl0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihiW2ldLnNlY29uZCA+IDEpewogICAgICAgICAgICAgICAgICAgICAgICBhc3NbaSAlIDJdID0gaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHByZWZfc3VtW2ldICs9IGJbaV0uc2Vjb25kOwogICAgICAgICAgICAgICAgcHJlZl9zdW0xW2ldW2kgJSAyXSArPSBiW2ldLnNlY29uZDsKICAgICAgICB9CiAgICAgICAvKiBmb3IoaW50IGkgPSAxOyBpIDwgbjsgaSsrKXsKICAgICAgICAgICAgICAgIGNvdXQgPDwgcHJlZl9zdW1baV0gPDwgIiAiOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGVuZGw7Ki8KICAgICAgICBjb3V0IDw8IGFucyA8PCBlbmRsOwp9Cg==