#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (n); i++)

int main() {
    int n;
    string s;
    cin >> n >> s;
    vector<int> r, g, b;
    for (int i = 0; i < n; i++) {
        if (s[i] == 'R') {
            r.push_back(i);
        }
        if (s[i] == 'G') {
            g.push_back(i);
        }
        if (s[i] == 'B') {
            b.push_back(i);
        }
    }
    int ans = 0;
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (s[i] == s[j]) continue;
            if (s[i] != 'R' && s[j] != 'R') {
                auto itr0 = upper_bound(r.begin(), r.end(), j);
                auto itr1 = lower_bound(r.begin(), r.end(), 2 * j - i);
                ans += itr1 - itr0;
                auto itr2 = upper_bound(r.begin(), r.end(), 2 * j - i);
                ans += r.end() - itr2;
            }
            if (s[i] != 'G' && s[j] != 'G') {
                auto itr0 = upper_bound(g.begin(), g.end(), j);
                auto itr1 = lower_bound(g.begin(), g.end(), 2 * j - i);
                ans += itr1 - itr0;
                auto itr2 = upper_bound(g.begin(), g.end(), 2 * j - i);
                ans += g.end() - itr2;
            }
            if (s[i] != 'B' && s[j] != 'B') {
                auto itr0 = upper_bound(b.begin(), b.end(), j);
                auto itr1 = lower_bound(b.begin(), b.end(), 2 * j - i);
                ans += itr1 - itr0;
                auto itr2 = upper_bound(b.begin(), b.end(), 2 * j - i);
                ans += b.end() - itr2;
            }
        }
    }
    cout << ans << endl;
}