#include <bits/stdc++.h>
using namespace std;
const int N = 200000 + 10;
const int M = 5 * N;
const int OO = 1000000000;
int ans = 0;
int anum = 0;
int i;
int n;
int result;
int sum[N];
int tree[M];
string s;
int lowbit(int x) { return x & (-x); }
int min(int a, int b) { return a < b ? a : b; }
int ask(int x) {
  int i = x;
  int result = OO;
  while (i > 0) {
    result = min(result, tree[i]);
    i -= lowbit(i);
  }
  return result;
}
void update(int x, int y) {
  int i = x;
  while (i < M) {
    tree[i] = min(tree[i], y);
    i += lowbit(i);
  }
}
int main() {
  getline(cin, s);
  n = s.size();
  for (i = 0; i < n; i++)
    if (s[i] >= 'a' && s[i] <= 'z') s[i] = s[i] - 'a' + 'A';
  for (i = 0; i < n; i++) {
    sum[i + 1] = sum[i];
    if (s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'U')
      sum[i + 1]--;
    else
      sum[i + 1] += 2;
  }
  for (i = 0; i <= n; i++) sum[i] += 2 * n;
  for (i = 0; i < M; i++) tree[i] = OO;
  update(sum[0], 0);
  for (i = 1; i <= n; i++) {
    result = ask(sum[i]);
    if (i - result > ans) {
      ans = i - result;
      anum = 0;
    }
    if (i - result == ans) anum++;
    update(sum[i], i);
  }
  if (ans > 0)
    cout << ans << " " << anum << "\n";
  else
    cout << "No solution\n";
  return 0;
}
