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

Задача . C. Записная книжка


Однажды маленький Вася нашел записную книжку мамы. В ней были записаны n имен ее друзей, каждое из которых необыкновенным образом было длиной ровно m букв. Пронумеруем имена от 1 до n в том порядке, в котором они записаны.

Так как мамы не было дома, Вася решил поиграть с именами: он выбирал три целых числа i, j, k (1 ≤ i < j ≤ n, 1 ≤ k ≤ m), и менял местами у имен с номерами i и j префиксы длиной ровно k символов. Например, если у имен «CBDAD» и «AABRD» поменять местами префиксы длиной 3, то получатся имена «AABAD» и «CBDRD».

Вам интересно, сколько возможных различных имен могло быть записано на месте имени номер 1, если Васе разрешено делать любое количество описанных действий. Делая каждое действие, Вася выбирает числа i, j, k независимо от предыдущих ходов и исключительно по своему усмотрению. Искомое число может быть очень большим, поэтому необходимо найти только остаток от деления этого числа на 1000000007 (109 + 7).

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

В первой строке входных данных записаны два целых числа n и m (1 ≤ n, m ≤ 100) — количество имен и длина каждого имени соответственно. Далее в n строках расположены имена, каждое состоит ровно из m заглавных латинских букв.

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

Выведите единственное целое число — остаток от деления на 1000000007 (109 + 7) количества различных имен, которые могли бы получиться на месте номер 1 после применений описанных действий.

Примечание

В первом примере Вася на месте имени номер 1 может получить следующие: «AAB», «AAA», «BAA» и «BAB».


Примеры
Входные данныеВыходные данные
1 2 3
AAB
BAA
4
2 4 5
ABABA
BCGDG
AAAAA
YABSA
216

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

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