fun readStr () = let fun scan reader stream = SOME (StringCvt.splitl (not o Char.isSpace) reader (StringCvt.skipWS reader stream)) in valOf (TextIO.scanStream scan TextIO.stdIn) end exception BadInput fun findAns "2" "3" "?" = 1 | findAns "3" "2" "?" = 4 | findAns "2" "?" "3" = 14 | findAns "3" "?" "2" = 14 | findAns "?" "2" "3" = 4 | findAns "?" "3" "2" = 1 | findAns _ _ _ = raise BadInput val () = let val c1 = readStr () val c2 = readStr () val c3 = readStr () val ans = findAns c1 c2 c3 in print (Int.toString ans ^ "\n") end