#include <bits/stdc++.h>
using namespace std;
int N;
char S[500050];
int Aint[4 * 500050];
int pa, pb, pv;
long long A[500050];
void update(int k, int st, int dr) {
  if (pa <= st && dr <= pb) {
    Aint[k] += pv;
    return;
  }
  int m = (st + dr) / 2;
  if (pa <= m) {
    update(2 * k, st, m);
  }
  if (pb > m) {
    update(2 * k + 1, m + 1, dr);
  }
}
void goUpdates(int p) {
  int a = p + 1;
  int b = N - p;
  if (a > b) {
    swap(a, b);
  }
  pa = 1;
  pb = a;
  pv = 1;
  update(1, 1, N);
  if (b + 1 <= N) {
    pa = b + 1;
    pb = N;
    pv = -1;
    update(1, 1, N);
  }
}
void go(int k, int st, int dr, long long sum) {
  sum += Aint[k];
  if (st == dr) {
    A[st] = sum;
    return;
  }
  int m = (st + dr) / 2;
  go(2 * k, st, m, sum);
  go(2 * k + 1, m + 1, dr, sum);
}
int main() {
  cin.sync_with_stdio(false);
  fgets(S, sizeof(S), stdin);
  N = 0;
  for (int i = 0; S[i] != '\n' && S[i] != '\0'; i++, N++)
    ;
  for (int i = 0; i < N; i++) {
    if (S[i] == 'I' || S[i] == 'E' || S[i] == 'A' || S[i] == 'O' ||
        S[i] == 'U' || S[i] == 'Y') {
      goUpdates(i);
    }
  }
  go(1, 1, N, 0);
  double ans = 0.0;
  for (int i = 1; i <= N; i++) {
    A[i] += A[i - 1];
    ans += (double)A[i] / i;
  }
  cout << fixed << setprecision(10) << ans << endl;
  return 0;
}
