B. Гиперсет
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Пчёлки Алиса и Алеся подарили пчеловодке Полине на Новый Год знаменитую карточную игру «Set». Колода для игры состоит из карт, каждая из которых обладает набором из четырех признаков: тип фигуры, количество фигур, их цвет и текстура. Сетом называется тройка карт, у которых каждый признак либо у всех попарно отличается, либо совпадает. Рисунок ниже иллюстрирует возможные комбинации карт.

Полина придумала новый вариант игры и назвала его «Hyperset». В этой игре есть $$$n$$$ карт, обладающих $$$k$$$ признаками, каждый из которых принимает значение «S», «E» или «T». Оригинальная игра «Set» может быть рассмотрена как «Hyperset» с $$$k = 4$$$.

Так же, как и раньше, в этой игре сетом все еще называется тройка карт, у которых каждый признак либо попарно отличается, либо совпадает. Цель игры очень проста: нужно найти количество способов выбрать три карты, образующие сет.

К сожалению, зимние каникулы подошли к концу, и Полине уже надо идти в школу. Помогите Полине найти количество сетов среди карт, лежащих на столе.

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

Первая строка входных данных содержит два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le n \le 1500$$$, $$$1 \le k \le 30$$$) — количество карт и количество признаков соответственно.

В каждой из следующих $$$n$$$ строк содержится описание карт. Описание карты представляет собой строку, состоящую из $$$k$$$ букв «S», «E», «T». Символ на позиции $$$i$$$ описывает $$$i$$$-й признак этой карты. Все карты различны.

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

Выведите единственное число — количество способов выбрать три карты, образующих сет.

Примеры
Входные данные
3 3
SET
ETS
TSE
Выходные данные
1
Входные данные
3 4
SETE
ETSE
TSES
Выходные данные
0
Входные данные
5 4
SETT
TEST
EEET
ESTE
STES
Выходные данные
2
Примечание

В третьем примере сетами являются следующие тройки карт:

  1. «SETT», «TEST», «EEET»
  2. «TEST», «ESTE», «STES»