#include <stdio.h>
#include <string.h>
struct rgbindex{
  int r;
  int g;
  int b;
};

int main(){
  char rgb[4001];
  char tmp1,tmp2;
  struct rgbindex index[4001];
  int len,i,j,a,b,c,tmp_int;
  long result=0;
  
  scanf("%d",&len);
  scanf("%s",rgb);
  
  a=b=c=0;
  for(i=len-1;0<=i;i--){
    if(rgb[i]=='R'){
      a++;
    }else if(rgb[i]=='G'){
      b++;
    }else if(rgb[i]=='B'){
      c++;
    }
      index[i].r=a;
      index[i].g=b;
      index[i].b=c;
  }
  
  //for(i=0;i<len;i++){
  //  printf("idx[%d]:%d %d %d\n",i,index[i].r,index[i].g,index[i].b);
  //}
      
  for(i=0;i<len-2;i++){
    tmp1=rgb[i];
    for(j=i+1;j<len-1;j++){
      if(rgb[j]!=tmp1){
        tmp2=rgb[j];
        if(tmp1=='R' && tmp2=='G' || tmp1=='G' && tmp2=='R'){
          tmp_int=index[j].b;
        } else if(tmp1=='R' && tmp2=='B' || tmp1=='B' && tmp2=='R'){
          tmp_int=index[j].g;
        } else if(tmp1=='G' && tmp2=='B' || tmp1=='B' && tmp2=='G'){
          tmp_int=index[j].r;
        }
        
        if((j-i)<(len-j) && (rgb[j+(j-i)]!=tmp1 && rgb[j+(j-i)]!=tmp2)){
          tmp_int--;
        }
          result+=tmp_int;
      }
    }
  }
  printf("%ld",result);
}