#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
const int MAXN = 200001;
int c[MAXN * 3 + 10];
int n;
char s[MAXN + 10];
int sum[MAXN + 10];
int lowbit(int x) { return x & (-x); }
void update(int pos, int delta) {
  while (pos <= n) {
    c[pos] = min(c[pos], delta);
    pos += lowbit(pos);
  }
}
int query(int end) {
  int res = INF;
  while (end > 0) {
    res = min(res, c[end]);
    end -= lowbit(end);
  }
  return res;
}
bool isvowel(char x) {
  if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u') return true;
  if (x == 'A' || x == 'E' || x == 'I' || x == 'O' || x == 'U') return true;
  return false;
}
int main() {
  scanf("%s", s);
  int len = strlen(s);
  n = 3 * len + 1;
  for (int i = 0; i <= n; i++) {
    c[i] = INF;
  }
  memset(sum, 0, sizeof(sum));
  for (int i = 0; i < len; i++) {
    sum[i + 1] = sum[i] + (isvowel(s[i]) ? -1 : 2);
  }
  int ret = -1;
  update(sum[0] + len + 1, 0);
  for (int i = 1; i <= len; i++) {
    int p = query(sum[i] + len + 1);
    if (p != INF && i - p > ret) {
      ret = i - p;
    }
    update(sum[i] + len + 1, i);
  }
  if (ret == -1) {
    printf("No solution\n");
  } else {
    int count = 0;
    for (int i = 0; i <= len; i++) {
      if (i + ret > len) break;
      if (sum[i + ret] - sum[i] >= 0) {
        count++;
      }
    }
    printf("%d %d\n", ret, count);
  }
  return 0;
}
