#define _USE_MATH_DEFINES
#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING
#define _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#include<iostream>
#include<unordered_set>

using namespace std;

#define dprint(Exp,...) if(Exp){fprintf(stderr, __VA_ARGS__);}
#define printe(...) fprintf(stderr, __VA_ARGS__);
//#define printe(...) void();
#define printE(...) fprintf(stderr, __VA_ARGS__);
//#define printE(...) void();


#define PrtExp(_Exp)  cerr<< #_Exp <<" = "<< (_Exp)
#define PrtExpN(_Exp)  cerr<< #_Exp <<" = "<< (_Exp) <<"\n"

#define SINT(n) scanf("%d",&n)
#define SINT2(n,m) scanf("%d %d",&n,&m)
#define SINT3(n,m,o) scanf("%d %d %d",&n,&m,&o)
#define SINT4(n,m,o,P) scanf("%d %d %d %d",&n,&m,&o,&P)
#define SINT5(n,m,o,P,q) scanf("%d %d %d %d %d",&n,&m,&o,&P,&q)
#define SLL(n) scanf("%lld",&n)
#define SLL2(n,m) scanf("%lld %lld",&n,&m)
#define SLL3(n,m,o) scanf("%lld %lld %lld",&n,&m,&o)
#define SST(s) scanf("%s",s)
#define SCH(c) scanf("%c",&c)

#define GC() getchar()

#define PINT(n) printf("%d",(int)(n))
#define PINT2(n,m) printf("%d %d",(int)(n),(int)(m))
#define PINT3(n,m,l) printf("%d %d %d",(int)(n),(int)(m),(int)(l))
#define PLL(n) printf("%lld",(long long)(n))
#define PST(s) printf("%s",(s))
#define PCH(s) printf("%c",(s))

#define PINTN(n) printf("%d\n",(int)(n))
#define PINT2N(n,m) printf("%d %d\n",(int)(n),(int)(m))
#define PINT3N(n,m,l) printf("%d %d %d\n",(int)(n),(int)(m),(int)(l))
#define PLLN(n) printf("%lld\n",(long long)(n))
#define PSTN(s) printf("%s\n",(s))
#define PCHN(s) printf("%c\n",(s))

#define PSP() printf(" ")
#define PN() printf("\n")

#define PC(c) putchar(c)
#define CSP (' ')
#define SN ("\n")

#define rep(i,a) for(int i=0;i<a;i++)
#define reP(i,a) for(int i=0;i<=a;i++)
#define Rep(i,a) for(int i=a-1;i>=0;i--)
#define ReP(i,a) for(int i=a;i>=0;i--)

#define rEp(i,a) for(i=0;i<a;i++)
#define rEP(i,a) for(i=0;i<=a;i++)
#define REp(i,a) for(i=a-1;i>=0;i--)
#define REP(i,a) for(i=a;i>=0;i--)

#define repft(i,a,b) for(int i=a;i<b;i++)
#define repfT(i,a,b) for(int i=a;i<=b;i++)
#define Repft(i,a,b) for(int i=a-1;i>=b;i--)
#define RepfT(i,a,b) for(int i=a;i>=b;i--)

#define foreach(a,it) for(auto it = a.begin(); it != a.end(); ++it)

#define FILL(a,v) fill(begin(a),end(a), v)
#define FILL0(a) memset(a,0,sizeof(a))
#define FILL1(a) memset(a,-1,sizeof(a))

typedef long long ll;

typedef unsigned long long ull;
typedef pair<int, int> Pi;
typedef pair<ll, ll>   Pll;


const int INF = 1'010'000'000; // 0x3C33'6080
const ll INFLL = 0x1f1f1f1f1f1f1f1fLL;//2,242,545,357,980,376,863

template <class A, class B> inline ostream& operator<<(ostream& st, const pair<A, B>& P) { return st << "(" << P.first << "," << P.second << ")"; };
template <class A, class B> inline pair<A, B> operator+(const pair<A, B>& P, const pair<A, B>& Q) { return pair<A, B>(P.first + Q.first, P.second + Q.second); };
template <class A, class B> inline pair<A, B> operator-(const pair<A, B>& P, const pair<A, B>& Q) { return pair<A, B>(P.first - Q.first, P.second - Q.second); };

#define fs  first
#define sc  second

int bitCount(unsigned int bits) {
	bits = (bits & 0x55555555) + (bits >> 1 & 0x55555555);    //  2bitごとに計算
	bits = (bits & 0x33333333) + (bits >> 2 & 0x33333333);    //  4bitごとに計算
	bits = (bits & 0x0f0f0f0f) + (bits >> 4 & 0x0f0f0f0f);    //  8bitごとに計算
	bits = (bits & 0x00ff00ff) + (bits >> 8 & 0x00ff00ff);    //  16ビットごとに計算   
	return (bits & 0x0000ffff) + (bits >> 16);    //  32ビット分を計算   
}


uint32_t xor64(void) {
	static uint64_t x = 88172645463325252ULL;
	x = x ^ (x << 13); x = x ^ (x >> 7);
	return x = x ^ (x << 17);
}

ll solve0(string s) {
	int ret = 0;
	do {
		int r = 0;
		rep(i, (int)s.size() - 2) {
			if (s[i] == 'A' && s[i + 1] == 'B' && s[i + 2] == 'C') {
				s[i + 0] = 'B';
				s[i + 1] = 'C';
				s[i + 2] = 'A';
				++r;
				i += 2;
			}
		}
		ret += r;
		if (r == 0) break;
	} while (true);
	return ret;
}
ll solve1(string s) {
	int i = 0;
	ll ret = 0;
	{
		string t = s;
		s = "";
		rep(i, t.size()) {
			if (t[i] == 'A') {
				s += 'A';
			} else if (t[i] == 'B'&&t[i+1] == 'C') {
				s += 'X';
				++i;
			} else {
				s += '.';
			}
		}
	}
	s += "**";
	ll a = 0;
	ll x = 0;
	ll b = 0;

	while(i < s.size()) {
		while (s[i] != 'A') {
			a = b = x = 0;
			++i;
			if (i == s.size()) break;
		}
		while (s[i] == 'A') {
			++a; ++i;
		}
		while (s[i] == 'X' && s[i + 1] == 'A' && s[i + 2] == 'X') {
			++x; ++i; ++i;
		}
		while (s[i] == 'X') {
			++b; ++i;
		}
		// cout << "$ " << a << " " << b << " "  << x << endl;
		ret += (a+x) * (b+x) - x*(x+1)/2;
		a += x;
		x = b = 0;
	}
	return ret;
}

int main() {
	string s;
	cin >> s;
	cout << solve1(s) << endl;
	return 0;


	while (cin >> s) {
		
		ll ret0 = solve0(s);
		ll ret1 = solve1(s);

		if (ret1 == ret0) {
			cout << ret1 << endl;
			continue;
		}

		cout << ret0 << " " << ret1 << endl;
		

		{
			string t = s;
			s = "";
			rep(i, t.size()) {
				if (t[i] == 'A') {
					s += 'A';
				} else if (t[i] == 'B'&&t[i+1] == 'C') {
					s += 'X';
					++i;
				} else {
					s += '.';
				}
			}
		}
		
		int ret = 0;
		cout << s << endl;
		do {
			string t = s;
			bool b[200] = {};
			int r = 0;
			rep(i, s.size() - 1) {
				if (s[i] == 'A' && s[i + 1] == 'X') {
					s[i + 0] = 'X';
					s[i + 1] = 'A';
					++r;
					b[i + 0] = true;
					b[i + 1] = true;
					i += 1;
				}
			}
			if (r == 0) break;
			rep(i, s.size()) {
				cout << (b[i] ? '#' : '.');
			}
			cout << endl;
			ret += r;
		} while (true);
		cout << ret << endl;
		// 
		// 
		// int ret = 0;
		// do {
		// 	string t = s;
		// 	bool b[200] = {};
		// 	int r = 0;
		// 	rep(i, s.size() - 2) {
		// 		if (s[i] == 'A' && s[i+1] == 'B' && s[i+2] == 'C') {
		// 			s[i+0] = 'B';
		// 			s[i+1] = 'C';
		// 			s[i+2] = 'A';
		// 			++r;
		// 			b[i + 0] = true;
		// 			b[i + 1] = true;
		// 			b[i + 2] = true;
		// 			i += 2;
		// 		}
		// 	}
		// 	
		// 	//cout << "> " << t << "  " << r << endl;
		// 	if (r == 0) break;
		// 
		// 	//cout << "  ";
		// 	rep(i, s.size()) {
		// 		//cout << (b[i] ? '^' : ' ');
		// 		cout << (b[i] ? '#' : '.');
		// 	}
		// 	cout << endl;
		// 
		// 	ret += r;
		// } while (true);
		// cout << ret << endl;
	}




}

/*
> ABCBCBCAAAABC  2
  ^^^       ^^^
> BCABCBCAAABCA  2
    ^^^    ^^^
> BCBCABCAABCAA  2
      ^^^ ^^^
> BCBCBCAABCAAA  1
         ^^^
> BCBCBCABCAAAA  1
        ^^^
> BCBCBCBCAAAAA  0


ABCBCBCBCBCAAAAAABCBCBC
AXXXXXAAAAAAXXX
##.........##..
.##.......####.
..##.....######
...##...######.
....##.######..
......######...
.....######....
......####.....
.......##......
26

ABCBCBCBCBCBCAAAAAABCBCBC
AXXXXXXAAAAAAXXX
##..........##..
.##........####.
..##......######
...##....######.
....##..######..
.....########...
......######....
.......####.....
........##......
27



ABCBCBCBCBCBCAAAAAABCABCBCBCBCBCAAAAABCBCBCBCBC
AXXXXXXAAAAAAXAXXXXXAAAAAXXXXX
##...... ....## ##........##....
.##..... ...#### ##......####...
..##.... ..###### ##....######..
...##... .######## ##..########.
....##.. ########## ## ##########
.....## ############ ## ########.
......## ############ ## ######..
.......## ############ ## ####...
........## ############ ## ##....
.........## ############ ##  .....
..........## ############ .. ....
...........## ##########.. .....
............## ########.... ....
.............## ######...... ...
..............## ####........ ..
...............## ##.......... .
................## ............ 
118

##.......... ####........ ##....
.##........ ######...... ####...
..##...... ########.... ######..
...##.... ##########.. ########.
....##.. ############ ##########
.....## ############ ##########.
...... ############ ##########..
..... ..########## ##########...
.... ....######## ##########....
.... .....###### ##########.....
..... .....#### ##########......
...... .....## ##########.......
....... ..... ##########........
........ .... .########.........
......... .... .######..........
.......... .... .####...........
........... .... .##............
118

AXXXXXXAAAAAAXAXXXXXAAAAAXXXXX



## ..........## ## ........##....
.## ........## #### ......####...
..## ......## ###### ....######..
...## ....## ######## ..########.
....## ..## ########## ##########
.....## ## ############ ########.
......##  ############## ######..
.......##  ############## ####...
........##  ############## ##....
.........##  ############## .....
..........##  ############.. ....
...........##  ##########.... ...
............##  ########...... ..
.............##  ######........ .
..............##  ####.......... 
...............##  ##...........
................##  ............


AAAAABCBCAABCBCBC
AAAAAXXAAXXX
....## ..##..
...#### ####.
..###### ####
.######## ##.
########## ..
.########.. .
..######.... 
...####.....
....##......

AAAAAXXAAXXX
....##. .##..
...#### ####.
..#### ######
.#### ######.
#### ######..
.## ######...
.. ######....
.. .####.....
.. ..##......




AXA...AXXAAX.
##....##..##.
.......####..
........##...

AXA...AX XAAX.
##....##..##.
.......####..
........## ...


*/

Measured memory_bytes: 1028