#include <bits/stdc++.h>
const long long INF = (long long)1e18 + 123;
const int inf = (int)1e8 + 123;
const int mod = 1e9 + 7;
using namespace std;
int n;
int size = 1;
struct node {
  int l, r, val;
  node() {
    l = r = 0;
    val = inf;
  }
} t[4000011];
void upd(int pos, int x, int v = 1, int tl = 1, int tr = 2 * inf) {
  if (!v) return;
  if (tl == tr) {
    t[v].val = min(t[v].val, x);
    return;
  }
  int tm = (tl + tr) / 2;
  if (pos <= tm) {
    if (!t[v].l) t[v].l = ++size;
    upd(pos, x, t[v].l, tl, tm);
  } else {
    if (!t[v].r) t[v].r = ++size;
    upd(pos, x, t[v].r, tm + 1, tr);
  }
  t[v].val = inf;
  if (t[v].l) t[v].val = t[t[v].l].val;
  if (t[v].r) t[v].val = min(t[v].val, t[t[v].r].val);
}
int get(int l, int r, int v = 1, int tl = 1, int tr = 2 * inf) {
  if (l > r || !v || tl > r || tr < l) return inf;
  if (tl >= l && tr <= r) return t[v].val;
  int tm = (tl + tr) / 2;
  return min(get(l, r, t[v].l, tl, tm), get(l, r, t[v].r, tm + 1, tr));
}
bool is[10011];
int main() {
  unsigned int FOR;
  asm("rdtsc" : "=A"(FOR));
  srand(FOR);
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  string s;
  int l = 0;
  cin >> s;
  is['a'] = is['A'] = 1;
  is['o'] = is['O'] = 1;
  is['u'] = is['U'] = 1;
  is['i'] = is['I'] = 1;
  is['e'] = is['E'] = 1;
  n = (int)s.size();
  int mx = 0, ans = 0;
  for (int i = 0; i < n; i++) {
    if (!is[s[i]]) {
      continue;
    }
    l++;
    int x = i - get(inf - 2 * (i + 1) + 3 * l, 2 * inf) - 1;
    if (x > mx) {
      mx = x;
      ans = 1;
    } else if (mx == x)
      ans++;
    upd(inf + 3 * l - 2 * (i + 1) + 1, i);
  }
  int x = 0, y = 0;
  for (int i = n - 1; i >= 0; i--) {
    if (is[s[i]])
      x++;
    else
      y++;
    if (x <= 2 * y) {
      if (n - i > mx) {
        mx = n - i;
        ans = 1;
      } else if (mx == n - i)
        ans++;
    }
  }
  x = 0, y = 0;
  for (int i = 0; i < n - 1; i++) {
    if (is[s[i]])
      x++;
    else
      y++;
    if (x <= 2 * y) {
      if (i + 1 > mx) {
        mx = i + 1;
        ans = 1;
      } else if (mx == i + 1)
        ans++;
    }
  }
  if (mx == 0)
    cout << "No solution";
  else
    cout << mx << " " << ans;
  return 0;
}
