ROT13

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

바이트랜드 항공기 공장에서 새로운 제트기를 개발했다. 이제 비행기에 숫자로 이름을 붙이는 것은 유행이 지났기 때문에, 경영진은 두 단어로 된 이름을 붙이기로 했다. 잠재 고객의 눈길을 끌기 위해, 이름에는 특별한 성질이 하나 있어야 한다. 바로 ROT13 암호로 변환해도 여전히 말이 되어야 한다는 것이다. 즉, 변환된 이름은 원래 이름과 두 단어의 순서만 다를 뿐 나머지는 같아야 한다.

ROT13 암호는 각 알파벳을 알파벳 순서상 13칸 떨어진 글자로 바꾼다. 정확히는 아래 표를 따른다.

구분알파벳
원래 글자abcdefghijklmnopqrstuvwxyz
변환된 글자nopqrstuvwxyzabcdefghijklm

다음을 수행하는 프로그램을 작성하라.

  • 표준 입력에서 사용할 수 있는 단어 목록을 읽는다.
  • 만들 수 있는 서로 다른 비행기 이름의 개수를 계산한다.
  • 그 결과를 표준 출력에 쓴다.

이름은 순서가 있는 두 단어 (w1,w2)(w_1, w_2)이며, 두 단어 모두 주어진 목록에 있어야 한다. 이름 전체에 ROT13을 적용하면 (ROT13(w1),ROT13(w2))(\mathrm{ROT13}(w_1), \mathrm{ROT13}(w_2))가 되고, 이것이 원래 두 단어를 재배열한 것과 같아야 한다. ROT13은 어떤 글자도 자기 자신으로 보내지 않으므로 순서를 그대로 두는 경우는 불가능하고, 결국 조건은 w2=ROT13(w1)w_2 = \mathrm{ROT13}(w_1)과 같다. 이름 (w1,w2)(w_1, w_2)(w2,w1)(w_2, w_1)은 서로 다른 이름으로 센다.

입력

첫째 줄에 정수 nn이 주어진다 (1n10000001 \le n \le 1000000). 다음 nn개의 줄에는 각각 영어 소문자로 이루어진 단어가 하나씩 주어진다. 각 단어는 적어도 한 글자를 가진다. 모든 단어의 길이 합은 10000001000000을 넘지 않는다.

출력

만들 수 있는 서로 다른 비행기 이름의 총 개수를 한 줄에 정수로 출력한다.