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
#include <cstdio>
#include <cstring>

char s[200001];
int A[200001];

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

void set_nearest_triplet(int n) {
    for(int i=0;i<n;i++)
        A[i]=-1;
    
    int nearest=-1;
    for(int i=n-1;i>=2;i--) {
        if(is_vowel(s[i])==is_vowel(s[i-1]) &&
            is_vowel(s[i-1])==is_vowel(s[i-2])) 
            nearest=i;
        A[i-2]=nearest;
    }
}

int main() {
    scanf("%s",s);
    int n=strlen(s);
    set_nearest_triplet(n);
    long long res=0;
    for(int i=0;i<n;i++) {
        int j=A[i];
        if(j==-1)
            break;
        res+=n-j;
    }
    printf("%lld\n",res);
    
    return 0;
}