#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 20;
long long int seg[maxn * 4];
long long int psum[maxn];
bool comp(pair<int, int> a, pair<int, int> b) { return (a > b); }
void inc(int s, int e, int v, int pos) {
  while (e - s > 1) {
    int mid = (s + e) / 2;
    if (pos < mid) {
      e = mid;
      v *= 2;
    } else {
      s = mid;
      v *= 2;
      v++;
    }
  }
  seg[v] = s;
  while (v != 1) {
    v /= 2;
    seg[v] = max(seg[2 * v + 1], seg[2 * v]);
  }
}
int fnd(int s, int e, int v, int l, int r) {
  if (l <= s && e <= r) {
    return seg[v];
  }
  if (l >= e || s >= r) {
    return -1;
  }
  int mid = (s + e) / 2;
  return max(fnd(s, mid, 2 * v, l, r), fnd(mid, e, 2 * v + 1, l, r));
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  fill(seg, seg + maxn * 4, -1);
  string s;
  cin >> s;
  int n = s.size();
  int A[n];
  for (int i = 0; i < n; i++) {
    if (int(s[i]) <= int('Z')) {
      s[i] = char(s[i] - 'A' + 'a');
    }
    if (s[i] == 'a' || s[i] == 'e' || s[i] == 'u' || s[i] == 'o' ||
        s[i] == 'i') {
      A[i] = -1;
    } else {
      A[i] = 2;
    }
  }
  psum[0] = 0;
  vector<pair<int, int> > vec;
  for (int i = 1; i <= n; i++) {
    psum[i] = psum[i - 1] + A[i - 1];
    vec.push_back({psum[i], i});
  }
  vec.push_back({0, 0});
  sort(vec.begin(), vec.end(), comp);
  int ans = 0;
  for (pair<int, int> p : vec) {
    int x = fnd(0, n + 1, 1, p.second, n + 1);
    ans = max(ans, x - p.second);
    inc(0, n + 1, 1, p.second);
  }
  int cnt = 0;
  for (int i = 0, j = ans + i; j <= n; i++, j++) {
    if (psum[j] - psum[i] >= 0) {
      cnt++;
    }
  }
  if (ans == 0) {
    cout << "No solution";
    return 0;
  }
  cout << ans << " ";
  cout << cnt;
  return 0;
}
