#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pl;
#define all(a) (a).begin(),(a).end()
#define overload4(_1, _2, _3, _4, name, ...) name
#define rep1(n) for(ll i = 0;i < (n);i++)
#define rep2(i,n) for(ll i = 0;i < (n);i++)
#define rep3(i,a,b) for(ll i = (a);i < (b);i++)
#define rep4(i,a,b,c) for(ll i = (a);i < (b);i += (c))
#define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__)
#define rrep1(n) for(ll i = (n)-1;i >= 0;i--)
#define rrep2(i,n) for(ll i = (n)-1;i >= 0;i--)
#define rrep3(i,a,b) for(ll i = (a)-1;i >= (b);i--)
#define rrep4(i,a,b,c) for(ll i = (a)-1;i >= (b);i -= (c))
#define rrep(...) overload4(__VA_ARGS__, rrep4, rrep3, rrep2, rrep1)(__VA_ARGS__)
#define SHOW(x) cout << #x << ": " << x << endl;
template<class T> ll sumArr(const T& a){ return accumulate(all(a), 0LL);}
template<class T> auto minArr(const T& a){ return *min_element(all(a));}
template<class T> auto maxArr(const T& a){ return *max_element(all(a));}
template<class T> void DEBUG_PRINT(T tmp){cout<<tmp<<endl;}
template<class T1,class... T2> void DEBUG_PRINT(T1 tmp,T2... tmp2){cout<<tmp<<" ";DEBUG_PRINT(tmp2...);}
ll gcd(ll a, ll b){ while(b){ ll c = b; b = a % b; a = c; } return a; }
const ll INF=1e18,MOD = 1e9+7;
const int iINF = 1e9;


int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    ll n,ans = 0;
    string s;
    cin>>n>>s;

    vector<ll>r,g,b;

    rep(i,s.size()){
        if(s[i] == 'R')r.push_back(i);
        if(s[i] == 'G')g.push_back(i);
        if(s[i] == 'B')b.push_back(i);
    }

    rep(i,s.size()){
        if(s[i] == 'R'){
            rep(j,g.size()){
                if(i >= g[j])continue;
                ll dist = g[j] - i;
                auto itr = upper_bound(all(b),g[j]);
                ans += b.end() - itr;
                if(binary_search(all(b),g[j] + dist))ans--;
            }
            rep(j,b.size()){
                if(i >= b[j])continue;
                ll dist = b[j] - i;
                auto itr = upper_bound(all(g),b[j]);
                ans += g.end() - itr;
                if(binary_search(all(g),b[j] + dist))ans--;
            }
            
        }

        else if(s[i] == 'G'){
            rep(j,r.size()){
                if(i >= r[j])continue;
                ll dist = r[j] - i;
                auto itr = upper_bound(all(b),r[j]);
                ans += b.end() - itr;
                if(binary_search(all(b),r[j] + dist))ans--;
            }
            rep(j,b.size()){
                if(i >= b[j])continue;
                ll dist = b[j] - i;
                auto itr = upper_bound(all(r),b[j]);
                ans += r.end() - itr;
                if(binary_search(all(r),b[j] + dist))ans--;
            }
        }

        else{ // s[i] == 'B'
            rep(j,r.size()){
                if(i >= r[j])continue;
                ll dist = r[j] - i;
                auto itr = upper_bound(all(g),r[j]);
                ans += g.end() - itr;
                if(binary_search(all(g),r[j] + dist))ans--;
            }
            rep(j,g.size()){
                if(i >= g[j])continue;
                ll dist = g[j] - i;
                auto itr = upper_bound(all(r),g[j]);
                ans += r.end() - itr;
                if(binary_search(all(r),g[j] + dist))ans--;
            }
        }

    }

    cout<<ans<<endl;



    return 0;

}

Measured memory_bytes: 3724