eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Красивые прямоугольники

Красивые прямоугольники

В один прекрасный день первоклассник Петя пришел домой, сделал уроки и стал думать, чем бы ему заняться. Ничего интересного в голову не приходило, поэтому Петя взял прямоугольный клетчатый лист бумаги размером \textbf{N} строк на \textbf{M} столбцов и записал в каждую клетку заглавную букву английского алфавита. Английский язык Петя начал изучать совсем недавно, и поэтому пока он знает только \textbf{5} первых букв алфавита. Таким образом, в каждой клетке листа оказалась записана буква '\textbf{A}'..'\textbf{E}'. Посмотрев на результаты своего труда, Петя остался недоволен - то ли лист оказался чересчур большим, то ли буквы на нем были записаны в плохом порядке. "\textit{Пожалуй, ситуацию можно улучшить, если вырезать из исходного листа прямоугольник поменьше,}" - подумал Петя. "\textit{И, конечно, вырезанный прямоугольник должен быть красивым!}" Но, что такое красивый прямоугольник? Дело в том, что Пете не нравятся как прямоугольники, в клетках которых много различных букв (\textbf{4} или \textbf{5}), так и прямоугольники, в клетках которых мало различных букв (\textbf{1} или \textbf{2}). Поэтому он считает прямоугольник красивым, если количество различных букв в его клетках равно \textbf{3}-м. Помогите Пете посчитать, сколькими способами он может вырезать из исходного листа бумаги красивый прямоугольник. Разрезы можно проводить только по границам клеток. Если исходный лист является красивым прямоугольником, то, возможно, Петя захочет ничего не вырезать и оставить исходный прямоугольник целиком, и это также считается одним из способов вырезания. Обратите внимание, что каждый способ вырезания можно однозначно задать четверкой неотрицательных чисел (\textbf{a}, \textbf{b}, \textbf{c}, \textbf{d}), где \textbf{a} - количество строк, отрезанных от исходного листа сверху, \textbf{b} - количество строк, отрезанных снизу, \textbf{c} - количество столбцов, отрезанных слева, и \textbf{d} - количество столбцов, отрезанных справа. Два способа вырезания, задаваемые четверками (\textbf{a}, \textbf{b}, \textbf{c}, \textbf{d}) и (\textbf{a'}, \textbf{b'}, \textbf{c'}, \textbf{d'}), считаются различными, если выполнено хотя бы одно из неравенств \textbf{a} ≠ \textbf{a'}, \textbf{b} ≠ \textbf{b'}, \textbf{c} ≠ \textbf{c'} или \textbf{d} ≠ \textbf{d'}. \InputFile В первой строке задано количество строк \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{400}) написанных Петей. Далее в \textbf{N} строках задан сам массив строк с содержимым исходного листа бумаги. В строке \textbf{t}\[\textbf{i}\] перечисляются слева направо символы, записанные в клетках (\textbf{i+1})-й сверху строки листа. Количество символов в строке не превышает \textbf{M} (\textbf{1} ≤ \textbf{M} ≤ \textbf{400}). \OutputFile Целое число, равное количеству способов вырезания красивого прямоугольника из исходного листа бумаги.
Лимит времени 0.5 секунд
Лимит использования памяти 64 MiB
Входные данные #1
2
AAB
CCB
Выходные данные #1
2