#include <bits/stdc++.h>
using namespace std;
string arr;
int onInd[1000042], it[1000042], k = 18;
pair<int, int> sums[1000042];
int v(char c) {
  if (c >= 'A' && c <= 'Z') {
    c = c - 'A' + 'a';
  }
  if (c == 'a' || c == 'e' || c == 'o' || c == 'i' || c == 'i' || c == 'u') {
    return -1;
  }
  return 2;
}
void add(int ind, int x) {
  ind += (1 << k);
  it[ind] = x;
  for (ind /= 2; ind; ind /= 2) {
    it[ind] = max(it[ind * 2], it[ind * 2 + 1]);
  }
}
int get(int s, int f, int ss, int ff, int ind) {
  if (f <= ss || ff <= s) {
    return 0;
  }
  if (ss <= s && f <= ff) {
    return it[ind];
  }
  return max(get(s, (s + f) / 2, ss, ff, ind * 2),
             get((s + f) / 2, f, ss, ff, ind * 2 + 1));
}
int main() {
  cin >> arr;
  sums[0].first = 0;
  for (int i = 1; i <= arr.size(); i++) {
    sums[i].first = sums[i - 1].first + v(arr[i - 1]);
    sums[i].second = i;
  }
  sort(sums, sums + arr.size() + 1);
  for (int i = 0; i <= arr.size(); i++) {
    onInd[sums[i].second] = i;
    add(i, sums[i].second);
  }
  int maxlen = 0, maxC = 1;
  for (int s = 0; s <= arr.size(); s++) {
    int maxInd = get(0, (1 << k), onInd[s], (1 << k), 1);
    if (maxInd == s) {
      continue;
    }
    if (maxInd - s > maxlen) {
      maxC = 0;
      maxlen = maxInd - s;
    }
    if (maxInd - s == maxlen) {
      maxC++;
    }
  }
  if (maxlen) {
    cout << maxlen << " " << maxC << "\n";
  } else {
    cout << "No solution\n";
  }
  return 0;
}
