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
#include<iostream>

using namespace std;

bool samogloska(char a) {
	if(a == 'a' || a == 'e' || a == 'i' || a == 'o' || a == 'u' || a == 'y')
		return true;
	else
		return false;
}

bool trigram(char a, char b, char c) {
	if((samogloska(a) && samogloska(b) && samogloska(c)) || (!samogloska(a) && !samogloska(b) && !samogloska(c)))
		return true;
	else
		return false;
}

int main() {
	string input = "";
	getline(cin, input);

	if (input.length() < 3) {
		cout << "0" << endl;
		return 0;
	}

	long lastTrigram = 0;
	long long count = 0;
	for(long i = 0; i <= input.length() - 3; i++) {
		if(trigram(input[i], input[i+1], input[i+2])) {
		//	cout << "trigram found at " << i << " trigram " << input[i] << input[i+1] << input[i+2] << endl;
			count += 1; // self
			if (i > lastTrigram) {
				// prefixes
				count += (i - lastTrigram) + (i - lastTrigram) * (input.length() - i - 3);
			}
			count += input.length() - i - 3; // postfixes
		//	cout << "count after: " << count << endl;
			lastTrigram = i+1;
		}
	}

	cout << count << endl;

	return 0;
}