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
57
58
59
60
61
62
63
#include <iostream>
#include <cstring>

char buf[200001];

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

long long count_difficulties(char *p, char *last_difficulty, int count, int len) {
    long long mid = (1LL*(count-1)*(count-2)) >> 1;
    long long left = (p-last_difficulty)-count;
    long right = len - (p-buf);
//    std::cout << count << " ! " << left << " : " << mid << " : " << right << std::endl;
    return (mid + (count-2)*(left+right) + left*right);
    
}

int main() {
    char *p = buf;
    char *last_difficulty = buf;
    long long res = 0LL;
    int count = 0;
    int is_last_char_a_vowel = 0;
    std::cin >> buf;
    int len = std::strlen(buf);

    while(*p) {
        if(is_a_vowel(*p)) {
            if(is_last_char_a_vowel) {
                count++;
            } else {
                if(count > 2) {
                    res += count_difficulties(p, last_difficulty, count, len);
                    last_difficulty = p-2;
                }
                is_last_char_a_vowel = 1;
                count = 1;
            }

        } else { // not a vowel
            if(is_last_char_a_vowel) {
                if(count > 2) {
                    res += count_difficulties(p, last_difficulty, count, len);
                    last_difficulty = p-2;
                }
                is_last_char_a_vowel = 0;
                count = 1;
            } else {
                count++;
            }
        }
        p++;
    }
    if(count > 2) {
        res += count_difficulties(p, last_difficulty, count, len);
        last_difficulty = p-2;
    }

    std::cout << res << std::endl;

    return 0;
}