#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <stack>
#include <algorithm>
#include <iostream>
#include <string>
#include <map>
#include <queue>
#include <stdio.h>
#include <math.h>

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

typedef vector<vector<int>> vvi;
typedef vector<int> vi;
typedef vector<string> vs;
typedef vector<vector<string>> vvs;
typedef vector<ll> vll;

typedef pair<int, int> pii;

typedef queue<int> qi;
typedef queue<string> qs;


#define rep(i, n) for(int i=0; i<(n); ++i)
#define repp(i, a, b) for(int i = (a); i <= (b); i++)
#define repm(i, a, b) for(int i = (a); i >= (b); i--)

#define all(v) v.begin(), v.end()
//sort( all(v) )　などと使える




int main(){
    int n;
    string s;
    cin >> n >> s;

    ll ans = 0;

    map<char, int> rgb_map;
    rep(i, n){
        if(s[i] == 'R') rgb_map['R']++;
        else if(s[i] == 'G') rgb_map['G']++;
        else if(s[i] == 'B') rgb_map['B']++;
    }

    //とりあえずr,g,bの個数の積を保存
    ans += rgb_map['R'] * rgb_map['G'] * rgb_map['B'];

    //これからj-i == k-j かつ3文字が異なるモノを引いてゆく
    for(int i=0; i<(n-2); ++i) for(int j=i+1; j<(n-2); ++j){
        
        int k = 2*j - i;
        
        if(k >= n) break;

        else if(s[i] != s[j] && s[j] != s[k] && s[k] != s[i]) ans--;
    }

    cout << ans << endl;
}