#include <bits/stdc++.h>
using namespace std;
int pre[200010], maxn[200010 * 4], x;
char s[200010];
bool isv(char ch) {
  if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') return 1;
  if (ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') return 1;
  return 0;
}
void construct(int o, int l, int r) {
  if (l == r) {
    maxn[o] = pre[l];
    return;
  }
  int m = (l + r) >> 1;
  construct(2 * o, l, m);
  construct(2 * o + 1, m + 1, r);
  maxn[o] = max(maxn[2 * o], maxn[2 * o + 1]);
}
int query(int o, int l, int r) {
  if (maxn[o] < x) return -1;
  if (l == r) return l;
  int m = (l + r) >> 1;
  if (maxn[2 * o + 1] >= x) return query(2 * o + 1, m + 1, r);
  if (maxn[2 * o] >= x) return query(2 * o, l, m);
  return -1;
}
int main() {
  scanf("%s", s + 1);
  int n = strlen(s + 1);
  pre[0] = 0;
  for (int i = 1; i <= n; i++) pre[i] = pre[i - 1] + (isv(s[i]) ? -1 : 2);
  construct(1, 1, n);
  int ans = -1;
  for (int i = 0; i < n; i++) {
    x = pre[i];
    int j = query(1, 1, n);
    ans = max(ans, j - i);
  }
  if (ans > 0) {
    int cnt = 0;
    for (int i = 0; i + ans <= n; i++)
      if (pre[i + ans] - pre[i] >= 0) cnt++;
    printf("%d %d\n", ans, cnt);
  } else
    puts("No solution");
  return 0;
}
