# 実装する
# BCをXとしたとき、AとXだけが含まれる部分列は操作終了後に左側にX右側にAが詰まる
# AXXAAXのときはXXXAAAになる Aが右側に移動すると考える
# Aの移動距離 部分列長6にAが3個ある それぞれのAの初期位置から最終的に移動する位置までの距離
# （Aの初期位置位置[1 4 5]が最終的に[4 5 6]にくるのでその差）
# しゃくとりっぽい操作でいけそう
s = input()
t = s.replace("BC", "X", len(s))
ans = 0
left, right = 0, 0
while left < len(t):
    # 部分列の左端を見つける
    if t[left] not in ["A", "X"]:
        left += 1
        continue
    a_indicies = []
    a_count = 0
    a_idx = 0
    if t[left] == "A":
        a_indicies.append(a_idx)
        a_count += 1
    right = left + 1
    a_idx += 1
    while right < len(t) and t[right] in ["A", "X"]:
        if t[right] == "A":
            a_indicies.append(a_idx)
            a_count += 1
        right += 1
        a_idx += 1
    # leftからrightまでの部分列にAしか含まれていないorXしか含まれていない場合は考えない
    if right - left != a_count and a_count != 0:
        for i in range(a_count):
            ans += ((right - left) - (a_count - i)) - a_indicies[i]  # 適当
    left = right + 1
print(ans) s = input() s input() input t = s.replace("BC", "X", len(s)) t s.replace("BC", "X", len(s)) s.replace s replace "BC" "X" len(s) len s ans = 0 ans 0 left, right = 0, 0 left 0 right 0 while left < len(t):
    # 部分列の左端を見つける
    if t[left] not in ["A", "X"]:
        left += 1
        continue
    a_indicies = []
    a_count = 0
    a_idx = 0
    if t[left] == "A":
        a_indicies.append(a_idx)
        a_count += 1
    right = left + 1
    a_idx += 1
    while right < len(t) and t[right] in ["A", "X"]:
        if t[right] == "A":
            a_indicies.append(a_idx)
            a_count += 1
        right += 1
        a_idx += 1
    # leftからrightまでの部分列にAしか含まれていないorXしか含まれていない場合は考えない
    if right - left != a_count and a_count != 0:
        for i in range(a_count):
            ans += ((right - left) - (a_count - i)) - a_indicies[i]  # 適当
    left = right + 1 left < len(t) left len(t) len t if t[left] not in ["A", "X"]:
        left += 1
        continue
     t[left] not in ["A", "X"] t[left] t left ["A", "X"] "A" "X" left += 1 left 1 continue a_indicies = [] a_indicies [] a_count = 0 a_count 0 a_idx = 0 a_idx 0 if t[left] == "A":
        a_indicies.append(a_idx)
        a_count += 1
     t[left] == "A" t[left] t left "A" a_indicies.append(a_idx) a_indicies.append a_indicies append a_idx a_count += 1 a_count 1 right = left + 1 right left + 1 left 1 a_idx += 1 a_idx 1 while right < len(t) and t[right] in ["A", "X"]:
        if t[right] == "A":
            a_indicies.append(a_idx)
            a_count += 1
        right += 1
        a_idx += 1
    # leftからrightまでの部分列にAしか含まれていないorXしか含まれていない場合は考えない
     right < len(t) and t[right] in ["A", "X"] right < len(t) right len(t) len t t[right] in ["A", "X"] t[right] t right ["A", "X"] "A" "X" if t[right] == "A":
            a_indicies.append(a_idx)
            a_count += 1
         t[right] == "A" t[right] t right "A" a_indicies.append(a_idx) a_indicies.append a_indicies append a_idx a_count += 1 a_count 1 right += 1 right 1 a_idx += 1 a_idx 1 if right - left != a_count and a_count != 0:
        for i in range(a_count):
            ans += ((right - left) - (a_count - i)) - a_indicies[i]  # 適当
     right - left != a_count and a_count != 0 right - left != a_count right - left right left a_count a_count != 0 a_count 0 for i in range(a_count):
            ans += ((right - left) - (a_count - i)) - a_indicies[i]  # 適当
     i range(a_count) range a_count ans += ((right - left) - (a_count - i)) - a_indicies[i] ans ((right - left) - (a_count - i)) - a_indicies[i] (right - left) - (a_count - i) right - left right left a_count - i a_count i a_indicies[i] a_indicies i left = right + 1 left right + 1 right 1 print(ans) print ans left += 1 1 left right = 0, 0 0 right t = s.replace("BC", "X", len(s)) s.replace("BC", "X", len(s)) t right += 1 1 right left, right = 0, 0 0 left a_count += 1 1 a_count left = right + 1 right + 1 left a_idx += 1 1 a_idx ans = 0 0 ans a_count = 0 0 a_count s = input() input() s ans += ((right - left) - (a_count - i)) - a_indicies[i] ((right - left) - (a_count - i)) - a_indicies[i] ans a_idx = 0 0 a_idx right = left + 1 left + 1 right a_idx += 1 1 a_idx a_indicies = [] [] a_indicies a_count += 1 1 a_count
# 実装する
# BCをXとしたとき、AとXだけが含まれる部分列は操作終了後に左側にX右側にAが詰まる
# AXXAAXのときはXXXAAAになる Aが右側に移動すると考える
# Aの移動距離 部分列長6にAが3個ある それぞれのAの初期位置から最終的に移動する位置までの距離
# （Aの初期位置位置[1 4 5]が最終的に[4 5 6]にくるのでその差）
# しゃくとりっぽい操作でいけそう
s = input()
t = s.replace("BC", "X", len(s))
ans = 0
left, right = 0, 0
while left < len(t):
    # 部分列の左端を見つける
    if t[left] not in ["A", "X"]:
        left += 1
        continue
    a_indicies = []
    a_count = 0
    a_idx = 0
    if t[left] == "A":
        a_indicies.append(a_idx)
        a_count += 1
    right = left + 1
    a_idx += 1
    while right < len(t) and t[right] in ["A", "X"]:
        if t[right] == "A":
            a_indicies.append(a_idx)
            a_count += 1
        right += 1
        a_idx += 1
    # leftからrightまでの部分列にAしか含まれていないorXしか含まれていない場合は考えない
    if right - left != a_count and a_count != 0:
        for i in range(a_count):
            ans += ((right - left) - (a_count - i)) - a_indicies[i]  # 適当
    left = right + 1
print(ans)