Олимпиадный тренинг

Задача . H. Подматрицы


Вам дана матрица \(s\), содержащая \(n\) строк и \(m\) столбцов. Каждый элемент матрицы представляет собой одну из первых \(5\) латинских букв (в верхнем регистре).

Для каждого \(k\) (\(1 \le k \le 5\)) посчитайте количество подматриц, содержащих ровно \(k\) различных букв. Напомним, что подматрица матрицы \(s\) — это матрица, которую можно получить из \(s\) после удаления нескольких (возможно, нуля) первых строк, нескольких (возможно, нуля) последних строк, нескольких (возможно, нуля) первых столбцов и нескольких (возможно, нуля) последних столбцов. Если некоторая подматрица может быть получена из \(s\) двумя или более способами, вы должны учесть эту подматрицу соответствующее количество раз.

Входные данные

Первая строка содержит два целых числа \(n\) и \(m\) (\(1 \le n, m \le 800\)).

Затем следует \(n\) строк, каждая из которых содержит строку \(s_i\) (\(|s_i| = m\)) — \(i\)-я строка матрицы.

Выходные данные

Для каждого \(k\) (\(1 \le k \le 5\)) выведите одно целое число — количество подматриц, содержащих ровно \(k\) различных букв.


Примеры
Входные данныеВыходные данные
1 2 3
ABB
ABA
9 9 0 0 0
2 6 6
EDCECE
EDDCEB
ACCECC
BAEEDC
DDDDEC
DDAEAD
56 94 131 103 57
3 3 10
AEAAEEEEEC
CEEAAEEEEE
CEEEEAACAA
78 153 99 0 0

time 3500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя