#include <bits/stdc++.h>

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;

template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <typename T>
using dijkstra = priority_queue<T, vector<T>, greater<T>>;

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define fbo find_by_order  // k th index
#define ook order_of_key   // strictly smaller than k
#define PI acos(-1.0)
#define inf 0x3f3f3f3f
#define max_ull 18446744073709551615
#define max_ll 9223372036854775807
#define lead_zero(x) __builtin_clzll(x)
#define trail_zero(x) __builtin_ctzll(x)
#define total_1s(x) __builtin_popcountll(x)
#define first_1(x) __builtin_ffsll(x)
#define log2_(x) __builtin_clz(1) - __builtin_clz(x)
#define isLeap(x) ((x % 400 == 0) || (x % 100 ? x % 4 == 0 : false))
#define QUERY           \
    int test;           \
    scanf("%d", &test); \
    for (int _T = 1; _T <= test; _T++)
#define FAST ios_base::sync_with_stdio(0), cin.tie(0)
#define all(v) v.begin(), v.end()
#define reunique(v) v.resize(std::unique(all(v)) - v.begin())
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pul pair<ull, ull>
#define ff first
#define ss second
#define MERGE(v1, v2, v) merge(all(v1), all(v2), back_inserter(v))
#define MP make_pair
#define EB emplace_back
#define read freopen("input.txt", "r", stdin)
#define write freopen("output.txt", "w", stdout)
#define in_range(v, r, l) upper_bound(all(v), r) - lower_bound(all(v), l)
#define LCM(a, b) (a / __gcd(a, b)) * b;

ll rdn(int y, int m, int d) {
    /* Rata Die day one is 0001-01-01 */
    if (m < 3)
        y--, m += 12;
    return 365 * y + y / 4 - y / 100 + y / 400 + (153 * m - 457) / 5 + d - 306;
}
/* Direction arrays */
/*int dx[] = {1,-1,0,0}, dy[] = {0,0,1,-1};                             */  // 4Direction
/*int dx[] = {1,-1,0,0,1,1,-1,-1}, dy[] = {0,0,1,-1,1,-1,1,-1};         */  // 8Direction
/* int dx[] = {1,-1,1,-1,2,2,-2,-2} , dy[] = {2,2,-2,-2,1,-1,1,-1};     */  // KnightDirection
/* int dx[] = {2,-2,1,1,-1,-1} , dy[] = {0,0,1,-1,1,-1};                */  // HexagonalDirection
/* int day[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; */
// ll gcd[209][209];
// int main() {
//     FAST;
//     ll k;
//     cin>>k;
//     ll sum = 0;
//     for(ll i=1;i<=k;i++){
//         for(ll j=1;j<=k;j++){
//             gcd[i][j] = __gcd(i,j);
//         }
//     }
//     for(ll i=1;i<=k;i++){
//         for(ll j=1;j<=k;j++){
//             for(ll l=1;l<=k;l++){
//                 sum = sum+gcd[gcd[i][j]][l];
//             }
//         }
//     }
//     cout<<sum<<"\n";
// }
ll cum[3][5009];
int n;
int query(int x, int idx) {
    if (x < 0)
        return 0;
    x = min(x, n - 1);
    return cum[idx][x];
}
int main() {
    FAST;
    string s;
    cin >> n >> s;
    //vector<int>R,G,B;
    for (int i = 0; i < n; i++) {
        if (s[i] == 'R') {
            //      B.EB(i);
            cum[0][i] = 1;
        }
        if (s[i] == 'G') {
            //    B.EB(i);
            cum[1][i] = 1;
        }
        if (s[i] == 'B') {
            //   B.EB(i);
            cum[2][i] = 1;
        }
    }
    for (int i = 1; i < n; i++) {
        cum[0][i] += cum[0][i - 1];
        cum[1][i] += cum[1][i - 1];
        cum[2][i] += cum[2][i - 1];
    }

    ll ans = 0;
    for (int x = 0; x < n; x++) {
        for (int y = x + 1; y < n; y++) {
            if (s[x] == s[y])
                continue;
            int idx = -1;
            if ((s[x] == 'R' && s[y] == 'G') || (s[x] == 'G' && s[y] == 'R')) {
                idx = 2;
            } else if ((s[x] == 'R' && s[y] == 'B') || (s[x] == 'B' && s[y] == 'R')) {
                idx = 1;
            } else if ((s[x] == 'G' && s[y] == 'B') || (s[x] == 'B' && s[y] == 'G')) {
                idx = 0;
            }
            int dist = y - x;
            ll cntR = (query(y + dist - 1, idx) - query(y, idx));
            cntR = (cntR + (query(n, idx) - query(y + dist, idx)));
            ans = ans + cntR;
        }
    }
    cout << ans << "\n";
}


Measured memory_bytes: 3676