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
#include <bits/stdc++.h>

using namespace std;

bool f;
char s[200000];
long long n,w,c=0,l=0,p,q=-1;

bool samogloska(char c) {
	return c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='y';
}

long long count(long long k, long long p, long long q, long long l, long long c) {
	long long prev=min(p,p-k+1),next=n-q;
	return (l-1)*(l-2)/2+(l-2)*(prev+next)+prev*next;
}

int main() {
	scanf("%s",s); n=strlen(s);
	f=samogloska(s[0]); l=1; p=0;
	for (long long i=1; i<n; ++i) {
		if (samogloska(s[i])==f) {
			++l;
		} else {
			if (l>=3) {
				w+=count(q,p,i,l,c); q=i-1;
			}
			f=!f; l=1; p=i;
		}
	}
	if (l>=3) {
		w+=count(q,p,n,l,c);
	}
	printf("%lld\n",w);
	return 0;
}