#include<bits/stdc++.h>
#define lli long long
#define all(i) i.begin(),i.end()
#define rall(i) i.rbegin(),i.rend()
#define rep0(i,j) for(int i=0;i<j;i++)
#define rep1(i,j) for(int i=1;i<=j;i++)
#define rep0d(i,j) for(int i=j-1;i>=0;i--)
#define MOD 1000000007
 
using namespace std;
 
bool cmpf(const pair<lli, lli> left, const pair<lli, lli> right) {
  	return left.first< right.first;
}
bool cmps(const pair<lli, lli> left, const pair<lli, lli> right) {
  	return left.second < right.second;
}
 
void dfs(lli ed, lli num, vector<map<lli,lli>>& vec){
    lli n=1;
    for(auto e: vec[num]){
        if(n == ed)n++;
        if(e.second != -1)continue;
        vec[num][e.first] = n;
        vec[e.first][num] = n;   
        dfs(n, e.first, vec);
        n++;
    }
}
 
lli gcd(lli a, lli b){
    if(a < b)return gcd(b, a);
    lli temp;
    while((temp = a%b)){
        a=b;
        b=temp;
    }
    return b;
}

struct nCr{
  vector<lli> f, rf;
  lli count=0;
  nCr(lli num): f(num), rf(num){
      count = num;
      f[0] = 1;
      rep1(i, num) f[i] = (f[i - 1] * i) % MOD;
      rep0(i, num+1) rf[i] = inv(f[i]);
  }
    
  lli inv(lli x) {
      lli res = 1;
      lli k = MOD - 2;
      lli y = x;
      while (k) {
          if (k & 1) res = (res * y) % MOD;
          y = (y * y) % MOD;
          k /= 2;
      }
      return res;
  }
  lli C(lli n, lli k) {
      lli a = f[n];
      lli b = rf[n-k];
      lli c = rf[k];
   
      lli bc = (b * c) % MOD;
   
      return (a * bc) % MOD;
  }
};

struct UF{
    vector<int> par,size;

    UF(int N) : par(N), size(N, 1){
        rep0(i,N)par[i] = i;
    }

    int root(int x){
        if (par[x] == x) return x;
        return par[x] = root(par[x]);
    }

    void unite(int x, int y){
        int rx = root(x);
        int ry = root(y);
        if(rx == ry) return;
        par[rx] = ry;
        size[rx] += size[ry];
    }

    bool same(int x, int y){
        int rx = root(x);
        int ry = root(y);
        return rx == ry;
    }

    int getSize(int x){
        return size[x];
    }
};
int main(){
  int n; string s;
  cin >> n >> s;
  vector<int> r,g,b;
  rep0(i,n){
    if(s[i]=='R')r.push_back(i);
    else if(s[i]=='G')g.push_back(i);
    else b.push_back(i);
  }
  lli ans= r.size() * g.size() * b.size();
    vector<int> tempr = r, tempg = g, tempb = b;
  while(!r.empty() && !g.empty() && !b.empty()){
    if(r.front() < g.front() && r.front() < b.front()){
      lli m=r.front();
      while(m > g.front()) g.erase(g.begin());
      while(m > b.front()) b.erase(b.begin());
      tempg=g; tempb=b;
      while(!r.empty() && !g.empty() && !b.empty()){
        if(g.front() > b.front()){
          if(*lower_bound(all(g), b.front()*2 - m) - b.front()==b.front() - m)ans--;
          b.erase(b.begin());
        }else{
          if(*lower_bound(all(b), g.front()*2 - m) - g.front()==g.front() - m){
            ans--;
          }
          g.erase(g.begin());
        }
      } r.erase(r.begin());
      g=tempg; b=tempb;
    }else if (g.front() > b.front()){
      lli m=b.front();
      while(m > g.front()) g.erase(g.begin());
      while(m > r.front()) r.erase(r.begin());
      tempg=g; tempr=r;
      while(!r.empty() && !g.empty() && !b.empty()){
        if(g.front() > r.front()){
          if(*lower_bound(all(g), r.front()*2 - m) - r.front()==r.front() - m)ans--;
          r.erase(r.begin());
        }else{
          if(*lower_bound(all(r), g.front()*2 - m) - g.front()==g.front() - m)ans--;
          g.erase(g.begin());
        }
      } b.erase(b.begin());
      g=tempg; r=tempr;
    }else{
      lli m=g.front();
      while(m > b.front()) b.erase(b.begin());
      while(m > r.front()) r.erase(r.begin());
      tempb=b; tempr=r;
      while(!r.empty() && !g.empty() && !b.empty()){
        if(b.front() > r.front()){
          if(*lower_bound(all(b), r.front()*2 - m) - r.front()==r.front() - m)ans--;
          r.erase(r.begin());
        }else{
          if(*lower_bound(all(r), b.front()*2 - m) - b.front()==b.front() - m)ans--;
          b.erase(b.begin());
        }
      } g.erase(g.begin());
      b=tempb; r=tempr;
    }
  }
  cout << ans;
  return 0;
}


Measured memory_bytes: 3664