#include <bits/stdc++.h>   using namespace std;   void printprecise(double l, long long int precision) {     std::cout << std::fixed;     std::cout << std::setprecision(precision);     std::cout << l;   }   long long int ncr(long long int n, long long int k) {     long long int C[n + 1][k + 1];     long long int i, j;     for (i = 0; i <= n; i++) {       for (j = 0; j <= min(i, k); j++) {         if (j == 0 || j == i)           C[i][j] = 1;         else           C[i][j] = C[i - 1][j - 1] + C[i - 1][j];       }     }     return C[n][k];   }   long long int power_wm(long long int x, long long int y, long long int p) {     long long int res = 1;     x = x % p;     while (y > 0) {       if (y & 1) res = (res * x) % p;       y = y >> 1;       x = (x * x) % p;     }     return res;   }   long long int power(long long int x, long long int y) {     long long int res = 1;     while (y > 0) {       if (y & 1) res = (res * x);       y = y >> 1;       x = (x * x);     }     return res;   }   long long int root(long long int x, vector<long long int> &roots) {     if (roots[x] != x) roots[x] = root(roots[x], roots);     return roots[x];   }   void unoin(long long int p, long long int q, vector<long long int> &roots,              vector<long long int> &rank) {     long long int rp = root(p, roots);     long long int rq = root(q, roots);     if (rank[rq] < rank[rp]) {       roots[rq] = rp;     } else if (rank[rp] > rank[rq]) {       roots[rp] = rq;     } else {       roots[rp] = rq;       rank[rq]++;     }   }   long long int dig_sum(long long int n) {     long long int s = 0;     while (n) {       s += n % 10;       n /= 10;     }     return s;   }   long long int gcd(long long int a, long long int b) {     if (a < b) {       a = a + b;       b = a - b;       a = a - b;     }     if (b == 0) return a;     return gcd(b, a % b);   }   long long int toD(long long int x, long long int y, long long int m) {     return x * m + y % m;   }   pair<long long int, long long int> twoD(long long int p, long long int m) {     return (make_pair(p / m, p % m));   }   vector<long long int> dist;   vector<vector<long long int> > g;   void dfs(long long int p) {     if (dist[p] != -1) {       return;     }     dist[p] = 0;     long long int maxd = -1;     for (long long int i = 0; i < g[p].size(); i++) {       dfs(g[p][i]);       maxd = max(maxd, dist[g[p][i]]);     }     dist[p] = maxd + 1;   }   vector<long long int> fact;   void calfact() {     fact[0] = 1;     for (long long int i = 1; i < 1000001; i++) {       fact[i] = (fact[i - 1] * i) % 998244353;     }   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     long long int n;     cin >> n;     string s;     cin >> s;     s =     + s;     long long int c = 0;     vector<long long int> last_a(n + 1), last_b(n + 1);     for (long long int i = 1; i < n + 1; i++) {       last_b[i] = last_b[i - 1];       last_a[i] = last_a[i - 1];       if (s[i - 1] ==  A ) {         last_a[i] = i - 1;       } else {         last_b[i] = i - 1;       }       if (s[i] ==  A ) {         c += last_a[i];         if (last_b[i] > 0 and last_b[i] < last_a[i]) {           c--;         }       } else {         c += last_b[i];         if (last_a[i] > 0 and last_a[i] < last_b[i]) {           c--;         }       }     }     cout << c;     return 0;   }