#include <bits/stdc++.h>
using namespace std;
const int maxn = 200100;
int C[maxn], D[maxn];
int sortedD[maxn], cumulative[maxn];
string S;
int isvowel(char c) {
  return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}
bool cmp(const int x, const int y) {
  if (D[x] != D[y]) return D[x] < D[y];
  return x < y;
}
int main() {
  cin >> S;
  int n = S.size();
  for (int i = 0; i < n; i++) S[i] = tolower(S[i]);
  int nCons = 0;
  for (int i = 0; i < n; ++i)
    if (!isvowel(S[i])) C[nCons++] = i;
  if (!nCons) {
    cout << "No solution" << endl;
    return 0;
  }
  for (int i = 0; i < nCons; ++i) {
    D[i] = C[i] - 3 * i;
    sortedD[i] = i;
  }
  sort(sortedD, sortedD + nCons, cmp);
  int mc = 0;
  for (int i = 0; i < nCons; ++i) {
    mc = max(mc, sortedD[i]);
    cumulative[i] = mc;
  }
  int res = 1;
  for (int i = nCons - 1; i >= 0; i--) {
    int lo = 0, hi = nCons - 1;
    for (; hi - lo > 1;) {
      int md = (lo + hi) / 2;
      if (D[sortedD[md]] > D[i] + 2)
        hi = md - 1;
      else
        lo = md;
    }
    if (D[sortedD[hi]] > D[i] + 2) hi = lo;
    int b = cumulative[hi];
    res = max(res, min(n, 3 * (b - i + 1)));
  }
  int cnt = 0, nc = 0;
  for (int i = 0; i < res; ++i) nc += !isvowel(S[i]);
  cnt += nc * 3 >= res;
  for (int i = res; i < n; ++i) {
    nc += !isvowel(S[i]);
    nc -= !isvowel(S[i - res]);
    cnt += 3 * nc >= res;
  }
  cout << res << " " << cnt << endl;
  return 0;
}
