#include <vector>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <stack>
#include <algorithm>
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <climits>
#include <cctype>
#include <iomanip>
#include <bitset>
#include <list>
#include <deque>
#include <utility>
#include <functional>
#include <cassert>
#include <complex>
using namespace std;
#define all(a) (a).begin(), (a).end()
#define ms(a, b) memset(a, b, sizeof(a))
#define mc(a, b) memcpy(a, b, sizeof(b))
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define eb emplace_back
#define fore(it, a) for (auto it = (a).begin(), it##_ = (a).end(); it != it##_; ++it)
#define f0r(i, a) for (int i = 0, i##_ = (a); i < i##_; ++i)
#define debug(args...) do {cerr << #args << ": "; dbg,args; cerr << endl;} while(0)
#define read(type, args...) type args; rdr,args;
#define fi first
#define se second
#define bit_no __builtin_popcount
#define left(a) (2*(a))
#define right(a) (2*(a)+1)
#define mid(left, right) (((left)+(right))/2+1)
#define PI acos(-1)
#define X fi
#define Y se
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> ii;
typedef tuple<int, int, int> iii;
typedef vector<ii> vii;
typedef vector<iii> viii;
template<typename T>
using min_pq = priority_queue<T, vector<T>, greater<T>>;
template<typename T>
using max_pq = priority_queue<T>;
const int inf = 2e9+5;
const ll l_inf = 2e18+5;
const int mod_v = 1e9+7;
const int max_n = 5e5+5;
const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, 1, 0, -1};
template<typename T>
T gcd(T a, T b)
{
while (b) {
T temp = a % b;
a = b;
b = temp;
}
return a;
}
template<typename T>
tuple<T, T, T> egcd(T a, T b)
{
T x1 = 1, x2 = 0, y1 = 0, y2 = 1;
while (b) {
T q = a / b, r = a % b;
T new_x = x1 - q*x2, new_y = y1 - q*y2;
x1 = x2, y1 = y2, x2 = new_x, y2 = new_y;
a = b, b = r;
}
return make_tuple(a, x1, y1);
}
inline ll lcm(ll a, ll b)
{
return a*b/gcd(a, b);
}
template<typename T>
inline T mod(T a, T b = mod_v)
{
return (a % b + b) % b;
}
template<typename T>
inline T mod_inv(T a, T b = mod_v)
{
return mod(get<1>(egcd(a, b)), b);
}
template<typename T>
inline T sum(T a, T b, T m = mod_v)
{
return mod(mod(a, m) + mod(b, m), m);
}
template<typename T>
inline T difference(T a, T b, T m = mod_v)
{
return mod(mod(a, m) - mod(b, m), m);
}
inline ll product(ll a, ll b, ll m = mod_v)
{
return mod(mod(a, m) * mod(b, m), m);
}
inline ll quotient(ll a, ll b, ll m = mod_v)
{
return mod(mod(a, m) * mod_inv(b, m), m);
}
template<typename T,typename T2>
ostream& operator<< (ostream &s, const pair<T,T2> &p) {return s << p.fi << ' ' << p.se << ' ';}
template<typename T,typename T2>
istream& operator>> (istream &s, pair<T,T2> &p) {return s >> p.fi >> p.se;}
template<typename T>
ostream& operator<< (ostream &s, const vector<T> &v) {for (auto it: v) s << it << ' '; return s;}
template<typename T>
istream& operator>> (istream &s, vector<T> &v) {fore (it, v) s >> *it; return s;}
template<typename T>
void read_range(T beg, T end)
{
while (beg != end)
cin >> *beg++;
}
template<typename T>
void print_range(T beg, T end)
{
while (beg != end)
cout << *beg++ << ' ';
}
struct reader
{
template<typename T>
reader& operator, (T &v)
{
cin >> v;
return *this;
}
} rdr;
struct debugger
{
template<typename T>
debugger& operator, (const T &v)
{
cerr << v << ", ";
return *this;
}
} dbg;
/***************************************************************
----------------------------------------------------------------
----------------------------------------------------------------
***************************************************************/
inline int v(char ch)
{
return (ch == 'I' or ch == 'E' or ch == 'A' or ch == 'O' or ch == 'U' or ch == 'Y');
}
string s, sz;
double ar[max_n];
double pre[max_n];
int main()
{
ios_base::sync_with_stdio(false);
cin >> s;
int sz = s.size();
for (int i = 1; i <= sz; ++i) {
ar[i] = 1./i;
}
for (int i = sz; i >= 1; --i) {
pre[i] = pre[i+1] + ar[i];
}
double res = 0;
double val = 0;
for (int i = 0; i < sz/2; ++i) {
val += pre[i+1] - pre[sz+1-i];
res += ((v(s[i]) + v(s[sz-1-i])) * val);
}
if (sz % 2) {
val += pre[sz/2+1] - pre[sz+1-sz/2];
res += v(s[sz/2]) * val;
}
cout << setprecision(6) << fixed << res;
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGNsaW1pdHM+CiNpbmNsdWRlIDxjY3R5cGU+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8Yml0c2V0PgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxjYXNzZXJ0PgojaW5jbHVkZSA8Y29tcGxleD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGFsbChhKSAgICAgICAgICAgICAgKGEpLmJlZ2luKCksIChhKS5lbmQoKQojZGVmaW5lIG1zKGEsIGIpICAgICAgICAgICAgbWVtc2V0KGEsIGIsIHNpemVvZihhKSkKI2RlZmluZSBtYyhhLCBiKSAgICAgICAgICAgIG1lbWNweShhLCBiLCBzaXplb2YoYikpCiNkZWZpbmUgbXAgICAgICAgICAgICAgICAgICBtYWtlX3BhaXIKI2RlZmluZSBtdCAgICAgICAgICAgICAgICAgIG1ha2VfdHVwbGUKI2RlZmluZSBwYiAgICAgICAgICAgICAgICAgIHB1c2hfYmFjawojZGVmaW5lIGViICAgICAgICAgICAgICAgICAgZW1wbGFjZV9iYWNrCiNkZWZpbmUgZm9yZShpdCwgYSkgICAgICAgICBmb3IgKGF1dG8gaXQgPSAoYSkuYmVnaW4oKSwgaXQjI18gPSAoYSkuZW5kKCk7IGl0ICE9IGl0IyNfOyArK2l0KQojZGVmaW5lIGYwcihpLCBhKSAgICAgICAgICAgZm9yIChpbnQgaSA9IDAsIGkjI18gPSAoYSk7IGkgPCBpIyNfOyArK2kpCiNkZWZpbmUgZGVidWcoYXJncy4uLikgICAgICBkbyB7Y2VyciA8PCAjYXJncyA8PCAiOiAiOyBkYmcsYXJnczsgY2VyciA8PCBlbmRsO30gd2hpbGUoMCkKI2RlZmluZSByZWFkKHR5cGUsIGFyZ3MuLi4pIHR5cGUgYXJnczsgcmRyLGFyZ3M7CiNkZWZpbmUgZmkgICAgICAgICAgICAgICAgICBmaXJzdAojZGVmaW5lIHNlICAgICAgICAgICAgICAgICAgc2Vjb25kCiNkZWZpbmUgYml0X25vICAgICAgICAgICAgICBfX2J1aWx0aW5fcG9wY291bnQKI2RlZmluZSBsZWZ0KGEpICAgICAgICAgICAgICgyKihhKSkKI2RlZmluZSByaWdodChhKSAgICAgICAgICAgICgyKihhKSsxKQojZGVmaW5lIG1pZChsZWZ0LCByaWdodCkgICAgKCgobGVmdCkrKHJpZ2h0KSkvMisxKQojZGVmaW5lIFBJICAgICAgICAgICAgICAgICAgYWNvcygtMSkKI2RlZmluZSBYICAgICAgICAgICAgICAgICAgIGZpCiNkZWZpbmUgWSAgICAgICAgICAgICAgICAgICBzZQoKdHlwZWRlZiBsb25nIGxvbmcgICAgICAgICAgICAgICBsbDsKdHlwZWRlZiBsb25nIGRvdWJsZSAgICAgICAgICAgICBsZDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgICAgICB1bGw7CnR5cGVkZWYgdmVjdG9yPGludD4gICAgICAgICAgICAgdmk7CnR5cGVkZWYgdmVjdG9yPHZpPiAgICAgICAgICAgICAgdnZpOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+ICAgICAgICAgIGlpOwp0eXBlZGVmIHR1cGxlPGludCwgaW50LCBpbnQ+ICAgIGlpaTsKdHlwZWRlZiB2ZWN0b3I8aWk+ICAgICAgICAgICAgICB2aWk7CnR5cGVkZWYgdmVjdG9yPGlpaT4gICAgICAgICAgICAgdmlpaTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnVzaW5nIG1pbl9wcSA9IHByaW9yaXR5X3F1ZXVlPFQsIHZlY3RvcjxUPiwgZ3JlYXRlcjxUPj47Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp1c2luZyBtYXhfcHEgPSBwcmlvcml0eV9xdWV1ZTxUPjsKCmNvbnN0IGludCBpbmYgPSAyZTkrNTsKY29uc3QgbGwgbF9pbmYgPSAyZTE4KzU7CmNvbnN0IGludCBtb2RfdiA9IDFlOSs3Owpjb25zdCBpbnQgbWF4X24gPSA1ZTUrNTsKCmNvbnN0IGludCBkeFs0XSA9IHsxLCAgMCwgLTEsICAwfTsKY29uc3QgaW50IGR5WzRdID0gezAsICAxLCAgMCwgLTF9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KVCBnY2QoVCBhLCBUIGIpCnsKICAgIHdoaWxlIChiKSB7CiAgICAgICAgVCB0ZW1wID0gYSAlIGI7CiAgICAgICAgYSA9IGI7CiAgICAgICAgYiA9IHRlbXA7CiAgICB9CiAgICByZXR1cm4gYTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdHVwbGU8VCwgVCwgVD4gZWdjZChUIGEsIFQgYikKewogICAgVCB4MSA9IDEsIHgyID0gMCwgeTEgPSAwLCB5MiA9IDE7CiAgICB3aGlsZSAoYikgewogICAgICAgIFQgcSA9IGEgLyBiLCByID0gYSAlIGI7CiAgICAgICAgVCBuZXdfeCA9IHgxIC0gcSp4MiwgbmV3X3kgPSB5MSAtIHEqeTI7CiAgICAgICAgeDEgPSB4MiwgeTEgPSB5MiwgeDIgPSBuZXdfeCwgeTIgPSBuZXdfeTsKICAgICAgICBhID0gYiwgYiA9IHI7CiAgICB9CiAgICByZXR1cm4gbWFrZV90dXBsZShhLCB4MSwgeTEpOwp9CgppbmxpbmUgbGwgbGNtKGxsIGEsIGxsIGIpCnsKICAgIHJldHVybiBhKmIvZ2NkKGEsIGIpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgppbmxpbmUgVCBtb2QoVCBhLCBUIGIgPSBtb2RfdikKewogICAgcmV0dXJuIChhICUgYiArIGIpICUgYjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KaW5saW5lIFQgbW9kX2ludihUIGEsIFQgYiA9IG1vZF92KQp7CiAgICByZXR1cm4gbW9kKGdldDwxPihlZ2NkKGEsIGIpKSwgYik7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmlubGluZSBUIHN1bShUIGEsIFQgYiwgVCBtID0gbW9kX3YpCnsKICAgIHJldHVybiBtb2QobW9kKGEsIG0pICsgbW9kKGIsIG0pLCBtKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KaW5saW5lIFQgZGlmZmVyZW5jZShUIGEsIFQgYiwgVCBtID0gbW9kX3YpCnsKICAgIHJldHVybiBtb2QobW9kKGEsIG0pIC0gbW9kKGIsIG0pLCBtKTsKfQoKaW5saW5lIGxsIHByb2R1Y3QobGwgYSwgbGwgYiwgbGwgbSA9IG1vZF92KQp7CiAgICByZXR1cm4gbW9kKG1vZChhLCBtKSAqICBtb2QoYiwgbSksIG0pOwp9CgppbmxpbmUgbGwgcXVvdGllbnQobGwgYSwgbGwgYiwgbGwgbSA9IG1vZF92KQp7CiAgICByZXR1cm4gbW9kKG1vZChhLCBtKSAqIG1vZF9pbnYoYiwgbSksIG0pOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIFQyPgpvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtICZzLCBjb25zdCBwYWlyPFQsVDI+ICZwKSB7cmV0dXJuIHMgPDwgcC5maSA8PCAnICcgPDwgcC5zZSA8PCAnICc7fQoKdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBUMj4KaXN0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmVhbSAmcywgcGFpcjxULFQyPiAmcCkge3JldHVybiBzID4+IHAuZmkgPj4gcC5zZTt9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtICZzLCBjb25zdCB2ZWN0b3I8VD4gJnYpICB7Zm9yIChhdXRvIGl0OiB2KSBzIDw8IGl0IDw8ICcgJzsgcmV0dXJuIHM7fQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KaXN0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmVhbSAmcywgdmVjdG9yPFQ+ICZ2KSB7Zm9yZSAoaXQsIHYpIHMgPj4gKml0OyByZXR1cm4gczt9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIHJlYWRfcmFuZ2UoVCBiZWcsIFQgZW5kKQp7CiAgICB3aGlsZSAoYmVnICE9IGVuZCkKICAgICAgICBjaW4gPj4gKmJlZysrOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIHByaW50X3JhbmdlKFQgYmVnLCBUIGVuZCkKewogICAgd2hpbGUgKGJlZyAhPSBlbmQpCiAgICAgICAgY291dCA8PCAqYmVnKysgPDwgJyAnOwp9CgpzdHJ1Y3QgcmVhZGVyCnsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICByZWFkZXImIG9wZXJhdG9yLCAoVCAmdikKICAgIHsKICAgICAgICBjaW4gPj4gdjsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9Cn0gcmRyOwoKc3RydWN0IGRlYnVnZ2VyCnsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICBkZWJ1Z2dlciYgb3BlcmF0b3IsIChjb25zdCBUICZ2KQogICAgewogICAgICAgIGNlcnIgPDwgdiA8PCAiLCAiOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KfSBkYmc7CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgppbmxpbmUgaW50IHYoY2hhciBjaCkKewogICAgcmV0dXJuIChjaCA9PSAnSScgb3IgY2ggPT0gJ0UnIG9yIGNoID09ICdBJyBvciBjaCA9PSAnTycgb3IgY2ggPT0gJ1UnIG9yIGNoID09ICdZJyk7Cn0KCnN0cmluZyBzLCBzejsKZG91YmxlIGFyW21heF9uXTsKZG91YmxlIHByZVttYXhfbl07CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgCiAgICBjaW4gPj4gczsKICAgIGludCBzeiA9IHMuc2l6ZSgpOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHN6OyArK2kpIHsKICAgICAgICBhcltpXSA9ICAxLi9pOwogICAgfQogICAgZm9yIChpbnQgaSA9IHN6OyBpID49IDE7IC0taSkgewogICAgICAgIHByZVtpXSA9IHByZVtpKzFdICsgYXJbaV07CiAgICB9CgogICAgZG91YmxlIHJlcyA9IDA7CiAgICBkb3VibGUgdmFsID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3ovMjsgKytpKSB7CiAgICAgICAgdmFsICs9IHByZVtpKzFdIC0gcHJlW3N6KzEtaV07CiAgICAgICAgcmVzICs9ICgodihzW2ldKSArIHYoc1tzei0xLWldKSkgKiB2YWwpOyAKICAgIH0KICAgIGlmIChzeiAlIDIpIHsKICAgICAgICB2YWwgKz0gcHJlW3N6LzIrMV0gLSBwcmVbc3orMS1zei8yXTsKICAgICAgICByZXMgKz0gdihzW3N6LzJdKSAqIHZhbDsKICAgIH0KCiAgICBjb3V0IDw8IHNldHByZWNpc2lvbig2KSA8PCBmaXhlZCA8PCByZXM7CgogICAgcmV0dXJuIDA7Cn0=