1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <string>
#include <time.h>


inline bool check_bal(int letters[]) {

#define a letters['a']
#define b letters['b']
#define c letters['c']

	if (a == b) {
		if ((b == c) || (c == 0) || (a == 0)) return true;
	}
	else if (b == c) {
		if ((a == 0) || (b == 0)) return true;
	}
	else if (a == c) {
		if ((a == 0) || (b == 0)) return true;
	}
	return false;

#undef a
#undef b
#undef c
}

uint64_t balanced_subwords(const char* word) {
	uint64_t ctr = 0;
	int letters[100];
	for (int i = 0; word[i] != '\0'; i++) {
		letters['a'] = 0;
		letters['b'] = 0;
		letters['c'] = 0;
		for (int j = i; word[j] != '\0'; j++) {
			letters[word[j]]++;
			if (check_bal(letters)) ctr++;
		}
	}
	return ctr;
}


int main() {
	std::ios_base::sync_with_stdio(false);
	std::cin.tie(nullptr);

	const int MAX_SIZE = 300001;
	char tab[MAX_SIZE + 1];

	std::cin >> tab;

	std::cout << balanced_subwords(tab);

	return 0;
}