package main
import (
"bufio"
"fmt"
"os"
)
func isVowel(c byte) bool {
switch c {
case 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U':
return true
}
return false
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Buffer(make([]byte, 1024*1024), 1024*1024)
if !scanner.Scan() {
return
}
s := scanner.Text()
n := len(s)
if n == 0 {
fmt.Println("No solution")
return
}
P := make([]int, n+1)
C := make([]int, 0, n+1)
P[0] = 0
C = append(C, 0)
maxLen := 0
count := 0
for i := 1; i <= n; i++ {
val := -2
if isVowel(s[i-1]) {
val = 1
}
P[i] = P[i-1] + val
if P[i] > P[C[len(C)-1]] {
C = append(C, i)
}
left, right := 0, len(C)-1
ans := -1
for left <= right {
mid := left + (right-left)/2
if P[C[mid]] >= P[i] {
ans = mid
right = mid - 1
} else {
left = mid + 1
}
}
if ans != -1 {
j := C[ans]
l := i - j
if l > 0 {
if l > maxLen {
maxLen = l
count = 1
} else if l == maxLen {
count++
}
}
}
}
if maxLen == 0 {
fmt.Println("No solution")
} else {
fmt.Printf("%d %d\n", maxLen, count)
}
}