Anagramistica
시간 제한1초메모리 제한512 MB
서로 다른 n개의 단어가 주어질 때, 아나그램 쌍이 정확히 k개인 부분집합의 개수를 10^9+7로 나눈 나머지를 구한다.
문제
Biljana는 십자말풀이를 만드는 것을 좋아한다. 그녀가 가장 좋아하는 유형은 이른바 애너그램 십자말풀이로, 각 힌트가 정답의 애너그램으로 주어진다.
그녀는 다음 퍼즐에 좋은 후보가 될 것 같은 단어 n개를 가지고 있다. 두 단어가 비슷하다는 것은 한 단어의 글자를 재배열해 다른 단어를 얻을 수 있다는 뜻이다. 즉 두 단어는 애너그램이다. 그녀는 자신의 단어 중 일부를 골라 그 부분집합 안에 비슷한 단어 쌍이 정확히 k개가 되도록 하려고 한다. 이런 부분집합의 개수를 구하는 것을 도와주자.
입력
첫째 줄에 정수 n (1 ≤ n ≤ 2000)과 k (0 ≤ k ≤ 2000)가 주어진다. n은 단어의 수, k는 필요한 비슷한 쌍의 수이다.
다음 n개 줄에 각각 알파벳 소문자로 이루어진 길이 10 이하의 단어가 하나씩 주어진다. 모든 단어는 서로 다르다.
출력
조건을 만족하는 부분집합의 개수를 109 + 7로 나눈 나머지를 출력한다.