#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <set>
#include <cstring>
#include <cassert>
#include <list>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <algorithm>
#include <functional>
#include <utility>
#include <bitset>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <limits>
using namespace std;
typedef long long          ll;
typedef unsigned long long ull;
typedef long double        ld;
typedef pair<int,int>      pii;
typedef pair<ll,ll>        pll;
typedef vector<int>        vi;
typedef vector<long long>  vll;
#define left(x)		   (x << 1)
#define right(x) 	   (x << 1) + 1
#define mid(l, r) 	   ((l + r) >> 1)
#define mp                 make_pair
#define pb                 push_back
#define all(a)             a.begin(),a.end()
#define debug(x)	   {cerr <<#x<<" = " <<x<<"\n"; }
#define debug2(x, y)       {cerr <<#x<<" = " <<x<<", "<<#y <<" = " <<y <<"\n";}
#define debug3(x, y, z)    {cerr <<#x<<" = " <<x<<", "<<#y <<" = " <<y <<", "<<#z<<" = "<<z<<"\n";}
#define debug4(x, y, z, w) {cerr <<#x<<" = " <<x<<", "<<#y <<" = " <<y <<", "<<#z<<" = "<<z<<", "<<#w << " = " <<w <<"\n";}
#define ss                 second
#define ff                 first
#define m0(x) 		   memset(x,0,sizeof(x))

template<typename T >T min_ ( T a , T b ) { return a > b ? b : a ; }
template < typename T ,  typename... Ts > T min_( T first , Ts... last ){ return  min_(first, min_(last...)); }
template<typename T >T max_ ( T a , T b ) { return a > b ? a : b ; }
template < typename T ,  typename... Ts > T max_( T first , Ts... last ){ return  max_(first, min_(last...)); }

template<class T, class S> std::ostream& operator<<(std::ostream &os, const std::pair<T, S> &t) {
	os<<"("<<t.first<<", "<<t.second<<")";
	return os;
}
template<typename T> ostream& operator<< (ostream& out, const vector<T>& v) {
    out << "["; size_t last = v.size() - 1; for(size_t i = 0; i < v.size(); ++i) {
    out << v[i]; if (i != last) out << ", "; } out << "]"; return out;
}

ll pwr(ll base, ll p, ll mod){
ll ans = 1; while(p) { if(p&1) ans=(ans*base)%mod; base=(base*base)%mod; p/=2; } return ans;
}
ll gcd(ll a, ll b) {  return b == 0 ? a : gcd(b,a%b); }
ll lcm(ll a, ll b) {  return a*(b/gcd(a,b)); }

const long double PI = (long double)(3.1415926535897932384626433832795);
const ll  mx_ll   = numeric_limits<ll> :: max();
const int mx_int  = numeric_limits<int> :: max();
const int mod = 1e9+7;


int cnt[4002][3];
int main()
{
    ios_base::sync_with_stdio(false); cin.tie(0);
  //  freopen("text.in", "rb", stdin);
    //freopen("  .out", "wb", stdout);

    int n; cin >> n;
    string s; cin >> s;

    for(int i = 1; i <= n; ++i) {
        if(s[i-1] == 'R') {
            cnt[i][0] += 1;
        }
        if(s[i-1] == 'G') {
            cnt[i][1] += 1;
        }
        if(s[i-1] == 'B') {
            cnt[i][2] += 1;
        }
    }
    for(int i = 1; i <= n; ++i) {
        for(int j = 0; j < 3; ++j) {
            cnt[i][j] += cnt[i-1][j];
        }
    }
    // 6 cases
    // i, j 
    ull fans = 0;
    for(int i = 1; i <= n; ++i) {
        for(int j = i+1; j <= n; ++j) {
            ull tans = 0;
            if(s[i-1] == s[j-1]) continue;
            char ch;
            if(s[i-1] == 'R' && s[j-1] == 'G') ch = 'B';
            else if(s[i-1] == 'R' && s[j-1] == 'B') ch = 'G';
            else if(s[i-1] == 'G' && s[j-1] == 'R') ch = 'B';
            else if(s[i-1] == 'G' && s[j-1] == 'B') ch = 'R';
            else if(s[i-1] == 'B' && s[j-1] == 'R') ch = 'G';
            else if(s[i-1] == 'B' && s[j-1] == 'G') ch = 'R';
            
            int dist = (j-i);
            if(ch == 'R') {
                  tans += (cnt[n][0] - cnt[j][0]);  
                  if(s[dist+j-1] == 'R') tans -= 1;
            }
            else if(ch == 'G') {
                  tans += (cnt[n][1] - cnt[j][1]); 
                  if(s[dist+j-1] == 'G') tans -= 1;
                  
            }
            else if(ch == 'B') {
                  tans += (cnt[n][2] - cnt[j][2]);  
                  if(s[dist+j-1] == 'B') tans -= 1;
            }
            fans += tans;
        }
    }
    cout << fans << endl;
    return 0;
}


Measured memory_bytes: 3660