Problem:
Score : 600 points

Problem Statement

You are given a string s consisting of A, B and C.

Snuke wants to perform the following operation on s as many times as possible:

Choose a contiguous substring of s that reads ABC and replace it with BCA.

Find the maximum possible number of operations.

Constraints

1 \leq |s| \leq 200000

Each character of s is A, B and C.

Input

Input is given from Standard Input in the following format:

s

Output

Find the maximum possible number of operations.

Sample Input 1

ABCABC

Sample Output 1

3

You can perform the operations three times as follows: ABCABC → BCAABC → BCABCA → BCBCAA. This is the maximum result.

Sample Input 2

C

Sample Output 2

0

Sample Input 3

ABCACCBABCBCAABCB

Sample Output 3

6

Solution in JavaScript (node.js v5.12) (judge verdict: Time Limit Exceeded)

function Main(input) {
	var output = 0;
  if(input.length <= 2){
     console.log(output);
    return;
     }
  while(true){
        var breakFlag = true;
  for(var i = 0; i < input.length; i++){
    var a = input.slice(i , i + 1);
    var b = input.slice(i + 1, i + 2);
    var c = input.slice(i + 2, i + 3);
    if(a == "A" && b == "B" && c == "C"){
       output++;
       i = i + 2;
       breakFlag = false;
    }
  }
    if(breakFlag){
       break;
       }else{
         //console.log(output);
        input = input.replace(/ABC/g,"BCA"); 
       }
  }
  console.log(output);
}

Main(require("fs").readFileSync("/dev/stdin", "utf8"));