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 Lua (Lua 5.3.5) (judge verdict: Time Limit Exceeded)

local s = io.read()

local i = 1
local counts = {}
local all = 0
while(true) do 
	if string.byte(s, i) == 65 then
		i = i + 1
		table.insert(counts, 0)
	elseif string.byte(s, i) == 66 and string.byte(s, i + 1) == 67 then
		i = i + 2
		for t, v in ipairs(counts) do 
			counts[t] = counts[t] + 1 
		end
	else
		i = i + 1
		for _, v in ipairs(counts) do 
			all = all + v
		end
		counts = {}
	end
	if i > string.len(s) + 1 then
		break
	end
end
print(all)