#include <bits/stdc++.h>
using namespace std;
const int N = (int)1e6 + 123;
const long long INF = (long long)1e18 + 123;
const int inf = (int)1e9 + 123;
const int MOD = (int)1e9 + 7;
void megaRandom() {
  unsigned int FOR;
  asm("rdtsc" : "=A"(FOR));
  srand(FOR);
}
string s;
bool vowel(char c) {
  c = tolower(c);
  if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') return 1;
  return 0;
}
int pref[N];
vector<int> ps;
int main() {
  megaRandom();
  cin >> s;
  pref[0] = vowel(s[0]);
  for (int i = 1; i < (int)(s.size()); i++) pref[i] = pref[i - 1] + vowel(s[i]);
  for (int i = 0; i < (int)(s.size()); i++)
    if (vowel(s[i])) ps.push_back(i);
  int itr = 0;
  int mx_len = 0, mx_cnt = 0;
  for (int i = 0; i < (int)(s.size()); i++) {
    while (itr + 1 < (int)(ps.size()) && ps[itr + 1] <= i) itr++;
    if (!(int)(ps.size()) || i < ps[0]) {
      if (i + 1 == mx_len) mx_cnt++;
      if (i + 1 > mx_len) mx_len = i + 1, mx_cnt = 1;
      continue;
    }
    int k = 0, v = itr - k + 1, p = 0;
    while (v > 2 * (i - p + 1 - v)) {
      k += v - 2 * (i - p + 1 - v);
      if (k > itr) break;
      if (k == 0)
        p = 0;
      else
        p = ps[k - 1] + 1;
      v = itr - k + 1;
    }
    if (v <= 2 * (i - p + 1 - v)) {
      if (i - p + 1 == mx_len) mx_cnt++;
      if (i - p + 1 > mx_len) mx_len = i - p + 1, mx_cnt = 1;
    }
  }
  if (mx_cnt == 0)
    cout << "No solution";
  else
    cout << mx_len << ' ' << mx_cnt;
  return 0;
}
