#include <bits/stdc++.h>
using namespace std;

const int N = 4010;
vector<int> R, G, B;
set<int> sR, sG, sB;

int main(){
    cin.tie(nullptr);
    ios::sync_with_stdio(false);

    int n;
    cin >> n;
    string s;
    cin >> s;

    for(int i = 0; i < n; i++){
        if(s[i] == 'R'){ 
            R.push_back(i);
            sR.insert(i);
        }else if(s[i] == 'G'){
            G.push_back(i);
            sG.insert(i);
        }else if(s[i] == 'B'){
            B.push_back(i);
            sB.insert(i);
        }
    }

    long long ans = 0;
    for(int i = 0; i < n; i++){
        long long bef_r = 0;
        long long bef_g = 0;
        long long bef_b = 0;
        long long aft_r = 0;
        long long aft_g = 0;
        long long aft_b = 0;

        if(s[i] == 'R'){
            // g [r] b
            bef_g = lower_bound(G.begin(), G.end(), i) - G.begin();
            aft_b = lower_bound(B.begin(), B.end(), i) - B.begin();

            long long a = bef_g ,b = B.size() - aft_b;
            long long tmp = a * b;
            for(int j = 0; j < bef_g; j++){
                long long c = i + (i - G[j]);
                if(sB.count(c)) tmp--;
            }
            ans += tmp;

            // b [r] g;
            tmp = 0;
            bef_b = lower_bound(B.begin(), B.end(), i) - B.begin();
            aft_g = lower_bound(G.begin(), G.end(), i) - G.begin();
            a = bef_b, b = G.size() - aft_g;
            tmp = a * b;
            for(int j = 0; j < bef_b; j++){
                long long c = i + (i - B[j]);
                if(sG.count(c)) tmp--;
            }
            ans += tmp;
        }else if(s[i] == 'G'){
            // r [g] b
            bef_r = lower_bound(R.begin(), R.end(), i) - R.begin();
            aft_b = lower_bound(B.begin(), B.end(), i) - B.begin();

            long long a = bef_r ,b = B.size() - aft_b;
            long long tmp = a * b;
            for(int j = 0; j < bef_r; j++){
                long long c = i + (i - R[j]);
                if(sB.count(c)) tmp--;
            }
            ans += tmp;

            // b [g] r;
            tmp = 0;
            bef_b = lower_bound(B.begin(), B.end(), i) - B.begin();
            aft_r = lower_bound(R.begin(), R.end(), i) - R.begin();
            a = bef_b, b = R.size() - aft_r;
            tmp = a * b;
            for(int j = 0; j < bef_b; j++){
                long long c = i + (i - B[j]);
                if(sR.count(c)) tmp--;
            }
            ans += tmp;
        }else{
            // r [b] g
            bef_r = lower_bound(R.begin(), R.end(), i) - R.begin();
            aft_g = lower_bound(G.begin(), G.end(), i) - G.begin();

            long long a = bef_r ,b = G.size() - aft_g;
            long long tmp = a * b;
            for(int j = 0; j < bef_r; j++){
                long long c = i + (i - R[j]);
                if(sG.count(c)) tmp--;
            }
            ans += tmp;

            // g [b] r;
            tmp = 0;
            bef_g = lower_bound(G.begin(), G.end(), i) - G.begin();
            aft_r = lower_bound(R.begin(), R.end(), i) - R.begin();
            a = bef_g, b = R.size() - aft_r;
            tmp = a * b;
            for(int j = 0; j < bef_g; j++){
                long long c = i + (i - G[j]);
                if(sR.count(c)) tmp--;
            }
            ans += tmp;
        }
        // cout << i << " :" << ans << endl;
    }

    cout << ans << endl;

    return 0;
}

Measured memory_bytes: 3776