비슷한 번호판
면접 대비시간 제한1초메모리 제한512 MB
길이가 같은 번호판 n개를 대소문자 무시 문자 조합과 대문자 개수로 묶고, 각 묶음 안의 쌍 개수를 센다.
문제
Albert가 다니는 회사의 주차장에 지금 자동차 n대가 일렬로 (좌에서 우로) 주차되어 있다. 편의상 차는 좌측부터 순서대로 1번에서 n번까지 번호로 나타내자. i번 차의 번호판에 적힌 문자열을 x[i]라 하자. n개의 문자열은 서로 다르며, 영어 대소문자 (a-z와 A-Z)로만 구성된 길이 k인 문자열이다. 즉, 모든 번호판의 길이는 같다.
임의의 두 자동차 i, j에 대하여 번호판 x[i]와 x[j]가 아래 조건을 모두 만족하면 두 자동차는 비슷한 번호판을 가졌다고 한다:
- 26가지의 각 알파벳에 대하여, 대소문자를 무시했을 때 해당 알파벳이 x[i]에 적힌 횟수와 x[j]에 적힌 횟수가 같다 (이 조건은 각 알파벳에 대해 만족해야 한다).
- x[i]에 적힌 대문자의 개수와 x[j]에 적힌 대문자의 개수가 같다.
예를 들어, n = 4, k = 3이고 x = ["AtY", "YtA", "aTy", "Ayt"]라 하자.
- 1번차와 2번차의 번호판은 비슷하다: 두 번호판 모두 A/a 1개, T/t 1개, Y/y 1개씩을 포함하고 대문자는 3글자 중 2글자이다.
- 3번차와 4번차의 번호판은 비슷하다: 두 번호판 모두 A/a 1개, T/t 1개, Y/y 1개씩을 포함하고 대문자는 3글자 중 1글자이다.
- 1번차와 3번차의 번호판은 비슷하지 않다: 1번차는 대문자 2개, 3번차는 대문자 1개를 포함한다 (단, 첫 번째 조건은 만족한다).
입력으로 n, k 그리고 x[1], ..., x[n]이 주어졌을 때, 비슷한 번호판 쌍의 수를 구해서 Albert에게 알려주자.
입력
첫 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 줄에는 n과 k가 공백으로 구분되어 주어진다.
두 번째 줄에는 길이가 k인 문자열 n개가 공백으로 구분되어 주어진다.
출력
각 테스트 케이스의 정답을 각 줄에 출력한다.
제한
- 1 ≤ T ≤ 20
- 1 ≤ n ≤ 10,000
- 1 ≤ k ≤ 20