// @author godmar // import java.util.*; import java.io.*; import static java.lang.Math.*; public class DigitTranslation_Godmar { public static void main(String []av) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = br.readLine(); int slen = line.length(); final long MOD = 9302023; long [] ways = new long[slen+1]; long [] dp = new long[slen+1]; for (int i = 0; i < slen+1; i++) dp[i] = i; ways[0] = 1; // want to find // dp[i] -> minimum length of replaced string ending at i. // String [] digits = new String[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; int [] digitlen = new int[] { 4 , 3 , 3 , 5 , 4 , 4 , 3 , 5 , 5 , 4 }; for (int i = 0; i < slen; i++) { // could I replace at position i? for (int j = 0; j < digits.length; j++) { int k = digitlen[j]; if (line.regionMatches(i, digits[j], 0, k)) { if (dp[i+k] > dp[i] + 1) { dp[i+k] = dp[i] + 1; ways[i+k] = ways[i]; } else if (dp[i+k] == dp[i] + 1) { ways[i+k] = (ways[i+k] * ways[i]) % MOD; } } } if (dp[i] + 1 < dp[i+1]) { dp[i+1] = dp[i] + 1; ways[i+1] = ways[i]; } else if (dp[i] + 1 == dp[i+1]) { ways[i+1] = (ways[i+1] + ways[i]) % MOD; } } System.out.println(dp[slen]); System.out.println(ways[slen]); } }