#include <bits/stdc++.h>
 using namespace std;
 using pii = pair<int, int>;
 using ll = long long;
 #define rep(i, j, n) for(int i = j; i < (int)(n); i++)
 const ll MOD = 1000000007;
 const ll INF = 1LL << 60;

 int main() {
   ll N, ans = 0;
   string S;

   cin >> N >> S;

   vector<int> R, G, B;

   rep(i, 0, N) {
     if (S.at(i) == 'R') R.emplace_back(i);
     else if (S.at(i) == 'G') G.emplace_back(i);
     else if (S.at(i) == 'B') B.emplace_back(i);
   }

   for (int i : R) {
     int j = lower_bound(G.begin(), G.end(), i) - G.begin();
     if (j >= G.size()) continue;
     for (int J = j; J < G.size(); J++) {
       int k = lower_bound(B.begin(), B.end(), G.at(J)) - B.begin();
       if (k < B.size()) {
         ans += B.size() - k;
         for (int l = k; l < B.size(); l++) {
           if (G.at(J) - i == B.at(l) - G.at(J)) ans--;
         }
       }
     }
   }

   for (int i : R) {
     int j = lower_bound(B.begin(), B.end(), i) - B.begin();
     if (j >= B.size()) continue;
     for (int J = j; J < B.size(); J++) {
       int k = lower_bound(G.begin(), G.end(), B.at(J)) - G.begin();
       if (k < G.size()) {
         ans += G.size() - k;
         for (int l = k; l < G.size(); l++) {
           if (B.at(J) - i == G.at(l) - B.at(J)) ans--;
         }
       }
     }
   }



         for (int i : G) {
           int j = lower_bound(R.begin(), R.end(), i) - R.begin();
           if (j >= R.size()) continue;
           for (int J = j; J < R.size(); J++) {
             int k = lower_bound(B.begin(), B.end(), R.at(J)) - B.begin();
             if (k < B.size()) {
               ans += B.size() - k;
               for (int l = k; l < B.size(); l++) {
                 if (R.at(J) - i == B.at(l) - R.at(J)) ans--;
               }
             }
           }
         }

         for (int i : G) {
           int j = lower_bound(B.begin(), B.end(), i) - B.begin();
           if (j >= B.size()) continue;
           for (int J = j; J < B.size(); J++) {
             int k = lower_bound(R.begin(), R.end(), B.at(J)) - R.begin();
             if (k < R.size()) {
               ans += R.size() - k;
               for (int l = k; l < R.size(); l++) {
                 if (B.at(J) - i == R.at(l) - B.at(J)) ans--;
               }
             }
           }
         }

         for (int i : B) {
           int j = lower_bound(R.begin(), R.end(), i) - R.begin();
           if (j >= R.size()) continue;
           for (int J = j; J < R.size(); J++) {
             int k = lower_bound(G.begin(), G.end(), R.at(J)) - G.begin();
             if (k < G.size()) {
               ans += G.size() - k;
               for (int l = k; l < G.size(); l++) {
                 if (R.at(J) - i == G.at(l) - R.at(J)) ans--;
               }
             }
           }
         }

         for (int i : B) {
           int j = lower_bound(G.begin(), G.end(), i) - G.begin();
           if (j >= G.size()) continue;
           for (int J = j; J < G.size(); J++) {
             int k = lower_bound(R.begin(), R.end(), G.at(J)) - R.begin();
             if (k < R.size()) {
               ans += R.size() - k;
               for (int l = k; l < R.size(); l++) {
                 if (G.at(J) - i == R.at(l) - G.at(J)) ans--;
               }
             }
           }
         }


   cout << ans << endl;
 }


Measured memory_bytes: 3592