#include <bits/stdc++.h>
 
#define rep(i,n) for(int i=0;i<(n);i++)
#define reps(i,n) for(int i=1;i<=(n);i++)
#define lol long long
#define SUM(n) ((n)+1)*(n)/2　//1〜nまでの総和を求める式
#define mp make_pair
#define fi first
#define se second
#define pu push_back
#define SYOU(x) setprecision(x+1) //小数点桁数を指定する
#define abs(x,y) (max(x,y)-min(x,y))
#define all(v) v.begin(),v.end()
#define UPDight(a,b) (a+b-1)/b //小数点切り上げ 
const int INF = 0x3f3f3f3f;
const long long LINF = 0x3f3f3f3f3f3f3f3fLL;
const int MOD=int(1e9)+7; 
using namespace std;
using pii = pair<int,int>;
typedef vector<int> vit;

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

  int n;
  string s;
  cin >> n >> s;
  int color[3][5005] = {};
  for(int i = n - 1;i >= 0;i --){
    if(s[i] == 'R'){
      color[0][i] ++;
    } else if(s[i] == 'G'){
      color[1][i] ++;
    } else {
      color[2][i] ++;
    }
    color[0][i] += color[0][i + 1];
    color[1][i] += color[1][i + 1];
    color[2][i] += color[2][i + 1];
  }
  lol ans = 0;
  rep(i, n){
    for(int j = i + 1;j < n;j ++){
      if(s[i] == 'R'){
	if(s[j] == 'G'){
	  ans += color[2][j + 1];
	  if(s[j + abs(j, i)] == 'B'){
	    ans --;
	  }
	} else if(s[j] == 'B'){
	  ans += color[1][j + 1];
	  if(s[j + abs(j, i)] == 'G'){
	    ans --;
	  }
	}
      } else if(s[i] == 'G'){
	if(s[j] == 'R'){
	  ans += color[2][j + 1];
	  if(s[j + abs(j, i)] == 'B'){
	    ans --;
	  }
	} else if(s[j] == 'B'){
	  ans += color[0][j + 1];
	  if(s[j + abs(j, i)] == 'R'){
	    ans --;
	  }
	}
      } else {
	if(s[j] == 'G'){
	  ans += color[0][j + 1];
	  if(s[j + abs(j, i)] == 'R'){
	    ans --;
	  }
	} else if(s[j] == 'R'){
	  ans += color[1][j + 1];
	  if(s[j + abs(j, i)] == 'G'){
	    ans --;
	  }
	}
      }
    }
  }
  cout << ans << '\n';
  return 0;
}
