#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;

#define ordered_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update>
#define ll long long
#define ull unsigned long long
#define N 100005
#define mod 1000000007
#define boost ios_base::sync_with_stdio(false);cin.tie(0)
#define prec(n) fixed<<setprecision(n)

#define mii unordered_map<int,int>
#define mll unordered_map<ll,ll>
#define pii pair<int,int>
#define pll pair<ll,ll>
#define fi  first

#define se second
#define pb push_back
#define mp make_pair
#define pp pop_back
#define vii vector<int>
#define vll vector<ll>
#define vpp vector<pii>
#define all(c) c.begin(),c.end()
#define tr(it,c) for(it = c.begin() ; it!=c.end() ; it++)
int inf = INT_MAX ;
ll modulo(ll num,ll MOD=mod){ return ((num%MOD)+MOD)%MOD;} // for negative integer
ll power(ll b,ll e,ll MOD=mod){ll ans=1; while(e){if(e%2) ans=(ans*b)%MOD; b=(b*b)%MOD; e/=2;} return ans;}
ll inv(ll num,ll MOD=mod){ return power(modulo(num),MOD-2,MOD); }
ll gcd(ll a,ll b){ return ((b==0) ? a:gcd(b,a%b));}

// int main(){
// 	boost;
//     string str;
//     cin>>str;
//     if(str[0]=='7'||str[1]=='7'||str[2]=='7')
//         cout<<"Yes";
//     else
//         cout<<"No";
// 	return 0;
// }

// int main(){
// 	boost;
//     int n;
//     cin>>n;
//     ll ans = 0;
//     for(int i = 1;i<=n;i++){
//         if(i%3!=0&&i%5!=0)
//             ans = ans + i;
//     }
//     cout<<ans;
// 	return 0;
// }

// int main(){
// 	boost;
//     int n;
//     cin>>n;
//     ll ans = 0;
//     for(int i = 1;i<=n;i++){
//         for(int j = 1;j<=n;j++){
//             for(int k = 1;k<=n;k++){
//                 ans = ans + gcd(i,gcd(j,k));
//             }
//         }
//     }
//     cout<<ans;
// 	return 0;
// }

int main(){
	boost;
    int n;
    cin>>n;
    string str;
    cin>>str;
    ll ans = 0,arr[n][3];
    memset(arr,0,sizeof(arr));
    for(int i = n-1;i>=0;i--){
        if(str[i]=='R'){
            arr[i][0] = 1;
        }else if(str[i]=='G'){
            arr[i][1] = 1;
        }else{
            arr[i][2] = 1;
        }
    }

    for(int i = n-2;i>=0;i--){
        arr[i][0] = arr[i][0] + arr[i+1][0];
        arr[i][1] = arr[i][1] + arr[i+1][1];
        arr[i][2] = arr[i][2] + arr[i+1][2];
    }

    for(int i = 0;i<n;i++){
        for(int j = i+1;j<n;j++){
            if(str[i]!=str[j]){
                if(str[i]=='R'){
                    if(str[j]=='G'){
                        ans = ans + arr[j][2];
                        if(2*j-i<n&&str[2*j-i]=='B')
                            ans--;
                    }else{
                        ans = ans + arr[j][1];
                        if(2*j-i<n&&str[2*j-i]=='G')
                            ans--;
                    }
                }else if(str[i]=='G'){
                    if(str[j]=='B'){
                        ans = ans + arr[j][0];
                        if(2*j-i<n&&str[2*j-i]=='R')
                            ans--;
                    }else{
                        ans = ans + arr[j][2];
                        if(2*j-i<n&&str[2*j-i]=='B')
                            ans--;
                    }
                }else{
                    if(str[j]=='G'){
                        ans = ans + arr[j][0];
                        if(2*j-i<n&&str[2*j-i]=='R')
                            ans--;
                    }else{
                        ans = ans + arr[j][1];
                        if(2*j-i<n&&str[2*j-i]=='G')
                            ans--;
                    }
                }
            }
        }
    }

    cout<<ans;

	return 0;
}

//Total solved problems:- 13


Measured memory_bytes: 3732