process.stdin.resume();
process.stdin.setEncoding('utf8');
// Your code here!

const gcdArr = function(arr) {
  let gcdres = gcd(arr[0], arr[1])
  for (let i=2; i<arr.length; i++) {
    gcdres = gcd(gcdres, arr[i])
  }
  return gcdres
}

function gcd_impl(n,m) {
        for( let i = 0; i < 10; ++i ) {
                let t = n - m;
                let q = m > t;
                n = q ? m : t;
                m = q ? t : m;
                if( m == 0 ) { return n; }
        }
        return gcd_impl( m, n % m );
}

function gcd( n, m ) {
        return n > m ? gcd_impl( n, m ) : gcd_impl( m, n );
}

const Main = (p)=>{
	// 1行目がinput[0], 2行目がinput[1], …に入る
	p = p.split("\n");
	let N = parseInt(p[0])//p.split(" ").map(Number);
	let S = p[1].split("").map(e=>{
	    if(e=="R")return 1;
	    if(e=="G")return 2;
	    if(e=="B")return 4;
	});
	//console.log(S);return;
	
	//文字列から10進数に変換するときはparseIntを使います
	
	let s=0;
	let nr=0,ng=0,nb=0;
	for(let i=0;i<N;i++){
	    if(S[i]==1)nr++;else if(S[i]==2)ng++;else nb++;
	}
	for(let i=0;i<N;i++){
	    switch(S[i]){
            case 1:nr--;break;
            case 2:ng--;break;
            case 4:nb--;break;
        }
        let tr=nr,tg=ng,tb=nb;
	    for(let j=i+1;j<N;j++){
	        
	        switch(S[j]){
                case 1:tr--;break;
                case 2:tg--;break;
                case 4:tb--;break;
            }
            let ttr=tr,ttg=tg,ttb=tb;
	        if(S[i]!=S[j]){
	                if(j+j-i<N)
	                switch(S[j+j-i]){
                        case 1:ttr--;break;
                        case 2:ttg--;break;
                        case 4:ttb--;break;
                    }
	                switch(S[i]+S[j]){
	                    case 3:s+=ttb;break;
	                    case 5:s+=ttg;break;
	                    case 6:s+=ttr;break;
	                }
	                
	            
	        }
	        
    	}
	}
	console.log(s);
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));