#include <bits/stdc++.h>   using namespace std;   const int MAXN = 500010;   const int MAXM = 500010;   const int INF = 1e9 + 7;   const double pi = acos(0.0) * 2.0;   const double eps = 1e-12;   inline int read(int &x) {     scanf( %d , &x);     return x;   }   inline long long read(long long &x) {     scanf( %I64d , &x);     return x;   }   inline char read(char c) {     c = getchar();     return c;   }   inline char *read(char *&x) {     scanf( %s , x);     return x;   }   inline char *readln(char *&x) {     gets(x);     return x;   }   inline string read(string &x) {     cin >> x;     return x;   }   inline string readln(string &x) {     getline(cin, x);     return x;   }   inline float read(float &x) {     scanf( %f , &x);     return x;   }   inline double read(double &x) {     scanf( %lf , &x);     return x;   }   inline void ToString(char *x, string &y) { y = x; }   template <typename T>   inline void read(vector<T> &a, int n) {     a.clear();     T x;     for (int i = 0; i < n; i++) a.push_back(read(x));   }   template <typename T>   inline void read(T a[], int n) {     for (int i = 0; i < n; i++) read(a[i]);   }   inline int write(int x) {     printf( %d , x);     return x;   }   inline int writeln(int x) {     printf( %d n , x);     return x;   }   inline long long write(long long x) {     printf( %I64d , x);     return x;   }   inline long long writeln(long long x) {     printf( %I64d n , x);     return x;   }   inline char write(char c) {     putchar(c);     return c;   }   inline char writeln(char c) {     putchar(c);     putchar(  n );     return c;   }   inline char *write(char *x) {     printf( %s , x);     return x;   }   inline char *writeln(char *x) {     puts(x);     return x;   }   inline string write(string x) {     cout << x;     return x;   }   inline string writeln(string x) {     cout << x <<   n ;     return x;   }   inline float write(float x) {     printf( %f , x);     return x;   }   inline float writeln(float x) {     printf( %f n , x);     return x;   }   inline double write(double x) {     printf( %lf , x);     return x;   }   inline double writeln(double x) {     printf( %lf n , x);     return x;   }   template <typename T>   inline void write(vector<T> &a, int n) {     for (int i = 0; i < n - 1; i++) {       write(a[i]);       putchar(   );     }     writeln(a[n - 1]);   }   template <typename T>   inline void writeln(vector<T> &a, int n) {     for (int i = 0; i < n; i++) writeln(a[i]);   }   template <typename T>   inline void write(T a[], int n) {     for (int i = 0; i < n - 1; i++) {       write(a[i]);       putchar(   );     }     writeln(a[n - 1]);   }   template <typename T>   inline void writeln(T a[], int n) {     for (int i = 0; i < n; i++) writeln(a[i]);   }   template <class T>   inline T abs1(T a) {     return a < 0 ? -a : a;   }   template <class T>   inline T max1(T a, T b) {     return a > b ? a : b;   }   template <class T>   inline T max1(T a, T b, T c) {     return max1(max1(a, b), c);   }   template <class T>   inline T max1(T a, T b, T c, T d) {     return max1(max1(a, b, c), d);   }   template <class T>   inline T max1(T a, T b, T c, T d, T e) {     return max1(max1(a, b, c, d), e);   }   template <class T>   inline T min1(T a, T b) {     return a < b ? a : b;   }   template <class T>   inline T min1(T a, T b, T c) {     return min1(min1(a, b), c);   }   template <class T>   inline T min1(T a, T b, T c, T d) {     return min1(min1(a, b, c), d);   }   template <class T>   inline T min1(T a, T b, T c, T d, T e) {     return min1(min1(a, b, c, d), e);   }   inline int jud(double a, double b) {     if (abs(a) < eps && abs(b) < eps)       return 0;     else if (abs1(a - b) / abs1(a) < eps)       return 0;     if (a < b) return -1;     return 1;   }   template <typename t>   inline int jud(t a, t b) {     if (a < b) return -1;     if (a == b) return 0;     return 1;   }   int N, M, T = INF, Cases = 0;   double l, r;   double ans[MAXN];   string s;   int main() {     std::ios::sync_with_stdio(false);     cin >> s;     N = s.length();     double sum = 0;     for (int i = 1; i <= N; i++) sum += 1 / double(i);     ans[0] = ans[N - 1] = sum;     l = 1;     r = N;     for (int i = 1; i < (N + 1) / 2; i++) {       sum -= 1.0 / l + 1.0 / r;       ans[i] = ans[N - i - 1] = ans[i - 1] + sum;       l += 1;       r -= 1;     }     double res = 0;     for (int i = 0; i < N; i++) {       if (s[i] ==  A  || s[i] ==  E  || s[i] ==  O  || s[i] ==  I  ||           s[i] ==  U  || s[i] ==  Y )         res += ans[i];     }     cout.setf(ios::fixed);     cout << setprecision(9) << res << endl;     return 0;   }