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 Fortran (gfortran v4.8.4) (judge verdict: Accepted)

character(2*10**5) S
integer(16) cntA
integer(16) ans
logical BC
read*,S
cntA=0
ans=0;BC=.false.
do i=1,len_trim(S)
  if(BC)then
    BC=.false.
    cycle
  endif
  if(S(i:i)=="A")cntA=cntA+1
  if(S(i:i)=="B")then
    if(S(i+1:i+1)=="C")then
      ans=ans+cntA
      BC=.true.
    else
      cntA=0
    endif
  endif
  if(S(i:i)=="C")cntA=0
end do

print"(I0)",ans

end