#include <bits/stdc++.h>
using namespace std;
using namespace std;
int ni() {
  int _num;
  scanf("%d", &_num);
  return _num;
}
int testnum;
string s;
const int maxn = 200005;
int cons[maxn], vow[maxn];
string vowel = "aeiouAEIOU";
bool isVowel(char c) {
  c = tolower(c);
  return int(vowel.find(c)) >= 0;
}
void preprocess() {}
map<int, int> earliest;
void solve() {
  int L = s.length();
  cons[0] = vow[0] = 0;
  earliest.clear();
  earliest[0] = 0;
  int bestCount = -1, bestLen = -1;
  for (int i = 1; i < L + 1; i++) {
    int nowVow = isVowel(s[i - 1]);
    vow[i] = nowVow + vow[i - 1];
    cons[i] = 1 - nowVow + cons[i - 1];
    int search = vow[i] - 2 * cons[i];
    if (earliest.find(search) != earliest.end()) {
      int itsLen = i - earliest[search];
      if (itsLen > bestLen)
        bestLen = itsLen, bestCount = 1;
      else if (itsLen == bestLen)
        bestCount++;
    } else
      earliest[search] = i;
  }
  if (vow[L] <= 2 * cons[L])
    cout << L << " " << 1 << endl;
  else {
    if (bestCount < 0)
      cout << "No solution" << endl;
    else
      cout << bestLen << " " << bestCount << endl;
  }
}
bool input() {
  cin >> s;
  return true;
}
int main() {
  preprocess();
  int T = 1;
  for (testnum = 1; testnum <= T; testnum++) {
    if (!input()) break;
    solve();
  }
}
