#include <bits/stdc++.h>
using namespace std;
bool isvowel(char c) {
  return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' ||
         c == 'E' || c == 'I' || c == 'O' || c == 'U';
}
int bit[1000002], mxl, sum[1000002];
int find_in_small(int x, int i) {
  int ret = i;
  while (x) {
    ret = ((ret) < (bit[x]) ? (ret) : (bit[x]));
    x -= (x & (-x));
  }
  return i - ret;
}
void update_in_large(int x, int i) {
  while (x <= mxl) {
    bit[x] = ((bit[x]) < (i) ? (bit[x]) : (i));
    x += (x & (-x));
  }
}
int main() {
  string a;
  int i, res, cnt, n, tmp;
  while (cin >> a) {
    n = a.size();
    memset(sum, 0, sizeof(sum));
    mxl = 0;
    sum[0] = n + 1;
    for (i = 1; i <= n; i++) {
      if (isvowel(a[i - 1]))
        sum[i] = sum[i - 1] - 1;
      else
        sum[i] = sum[i - 1] + 2;
      mxl = ((mxl) > (sum[i]) ? (mxl) : (sum[i]));
    }
    for (i = 0; i <= mxl; i++) bit[i] = n + 1;
    res = -1;
    update_in_large(sum[0], 0);
    for (i = 1; i <= n; i++) {
      tmp = find_in_small(sum[i], i);
      if (tmp > 0) res = ((res) > (tmp) ? (res) : (tmp));
      update_in_large(sum[i], i);
    }
    if (res <= 0) {
      printf("No solution\n");
      continue;
    }
    cnt = 0;
    for (i = res; i <= n; i++)
      if (sum[i] - sum[i - res] >= 0) cnt++;
    cout << res << " " << cnt << endl;
  }
  return 0;
}
