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 _ [] = raise BadInput | findAns _ [_] = raise BadInput | findAns _ [_, _] = raise BadInput | findAns index (h1 :: h2 :: h3 :: tl) = if (h1 = h2 andalso h2 <> h3) then (index + 2, h3) else if (h2 = h3 andalso h1 <> h2) then (index, h1) else if (h3 = h1 andalso h2 <> h3) then (index + 1, h2) else findAns (index + 1) (h2 :: h3 :: tl) val () = let val s = readStr () val (ansIndex, ansChar) = findAns 1 (String.explode s) in print (Int.toString ansIndex ^ " " ^ Char.toString ansChar ^ "\n") end