Задача делится на три части, которые лучше не смешивать.
1) получение ввода (в main или аналогичной процедуре с доступом к IO)
2) обработка данных (чистыми функциями)
3) вывод результата (в main или аналогичной процедуре с доступом к IO)
1 и 3 решается использованием функций из
System.IO (если не выходить за пределы базовой библиотеки).
Я настоятельно рекомендую вычитать весь ввод из файла или консоли и только потом приступать к его разбору. Иначе от попыток решить несколько разных задач в один заход будет каша в голове.