Problem:
Score : 400 points

Problem Statement

We have a string S of length N consisting of R, G, and B.

Find the number of triples (i,~j,~k)~(1 \leq i < j < k \leq N) that satisfy both of the following conditions:

S_i \neq S_j, S_i \neq S_k, and S_j \neq S_k.

j - i \neq k - j.

Constraints

1 \leq N \leq 4000

S is a string of length N consisting of R, G, and B.

Input

Input is given from Standard Input in the following format:

N
S

Output

Print the number of triplets in question.

Sample Input 1

4
RRGB

Sample Output 1

1

Only the triplet (1,~3,~4) satisfies both conditions. The triplet (2,~3,~4) satisfies the first condition but not the second, so it does not count.

Sample Input 2

39
RBRBGRBGGBBRRGBBRRRBGGBRBGBRBGBRBBBGBBB

Sample Output 2

1800

Solution in JavaScript (Node.js 12.16.1) (judge verdict: Wrong Answer)

    // inputに入力データ全体が入る
    function Main(inputString) {
        // 1行目がinput[0], 2行目がinput[1], …に入る
        arrInputString = inputString.trim().split("\n");
        const ARR_LENGTH = parseInt(arrInputString[0], 10);
        const RGB_STRING  = arrInputString[1];
        let sum = 0;
        let arrR = [];
        let arrG = [];
        let arrB = [];

        // 仕分け
        for(let i = 0; i<ARR_LENGTH; i++){
            let tmpChar = RGB_STRING.substr(i,1)
            if(tmpChar = 'R'){
                arrR.push(i+1);
            }else if (tmpChar = 'G'){
                arrG.push(i+1);
            }else if(tmpChar = 'B'){
                arrB.push(i+1);
            }
        }

        arrR.forEach( (tmpRNumber) => {
            arrG.forEach( (tmpGNumber) => {
                arrB.forEach( (tmpBNumber) => {
                    if( (tmpGNumber - tmpRNumber) != (tmpBNumber - tmpGNumber)){
                        sum++;
                    }
                })
            })
        })
        
    	//出力
    	console.log(sum);
    }


    //*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
    Main(require("fs").readFileSync("/dev/stdin", "utf8"));
    // Main('4\nRRGB');