#include <bits/stdc++.h>
using namespace std;
const int L = 1 << 20;
const int R = 1 << 21;
const int Maxn = 200005;
int tree[R], A, B;
int d[Maxn];
char s[Maxn];
bool vowel(char x) {
  x = tolower(x);
  if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u') return 1;
  return 0;
}
int read(int lo, int hi, int x) {
  if (hi < A || lo > B) return Maxn;
  if (A <= lo && hi <= B) return tree[x];
  int mid = (lo + hi) >> 1;
  return min(read(lo, mid, 2 * x), read(mid + 1, hi, 2 * x + 1));
}
void update(int x, int id) {
  tree[x] = min(id, tree[x]);
  for (x >>= 1; x > 0; x >>= 1) tree[x] = min(tree[2 * x], tree[2 * x + 1]);
}
int main() {
  for (int i = 0; i < R; ++i) tree[i] = Maxn;
  scanf("%s", s);
  int n = strlen(s);
  for (int i = 0; i < n; ++i) {
    if (i) d[i] = d[i - 1];
    if (vowel(s[i]))
      --d[i];
    else
      d[i] += 2;
  }
  for (int i = 0; i < n; ++i) d[i] += Maxn;
  update(L + Maxn, -1);
  int sol = 0, cnt = 0;
  for (int i = 0; i < n; ++i) {
    A = L, B = L + d[i];
    int id = read(L, R - 1, 1);
    update(L + d[i], i);
    if (id == Maxn) continue;
    if (i - id > sol)
      sol = i - id, cnt = 1;
    else if (i - id == sol)
      ++cnt;
  }
  if (!sol)
    printf("No solution\n");
  else
    printf("%d %d\n", sol, cnt);
  return 0;
}
