#include <bits/stdc++.h>
using namespace std;
bool isgl(char ch) {
  ch = tolower(ch);
  return (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'u' || ch == 'o');
}
int n, t[400200];
int sum[200100], ra[200100];
vector<pair<int, int> > a;
void update(int pos, int x) {
  t[pos += n] = x;
  while (pos >>= 1) t[pos] = max(t[pos * 2], t[pos * 2 + 1]);
}
int getmax(int l, int r) {
  int ans = -1;
  l += n, r += n;
  while (l <= r) {
    if (l & 1) ans = max(ans, t[l]);
    if (!(r & 1)) ans = max(ans, t[r]);
    l = (l + 1) / 2, r = (r - 1) / 2;
  }
  return ans;
}
int main() {
  string s;
  getline(cin, s);
  n = s.size() + 1;
  for (int i = 1; i < n; ++i) sum[i] = sum[i - 1] + (isgl(s[i - 1]) ? -1 : 2);
  a.resize(n);
  for (int i = 0; i < n; ++i) a[i] = make_pair(sum[i], i);
  sort(a.begin(), a.end());
  for (int i = 0; i < n; ++i) ra[a[i].second] = i;
  for (int i = 0; i < n; ++i) t[i + n] = a[i].second;
  for (int i = n - 1; i > 0; --i) t[i] = max(t[i * 2], t[i * 2 + 1]);
  int mans = 0, ans = 0;
  for (int i = 0; i < n; ++i) {
    int id = ra[i];
    update(id, -1);
    int tmp = getmax(id + 1, n - 1);
    if (tmp > i) {
      if (tmp - i > mans)
        mans = tmp - i, ans = 1;
      else if (tmp - i == mans)
        ans++;
    }
  }
  if (ans > 0)
    cout << mans << ' ' << ans;
  else
    cout << "No solution";
  return 0;
}
