높은 보안

시간 제한3초메모리 제한256 MB

요약
길이 5, 문자 62종인 비밀번호 최대 5만 개가 주어질 때 해밍 거리 0부터 5까지 각각에 해당하는 쌍의 개수를 구합니다.
난이도

보통10점 중 7점

유형
문자열, 조합론, 비트 연산, 해시맵
정답자
아직 제출이 없습니다

문제

Vasya는 Five Contacts(줄여서 V Contacts)라는 새로운 소셜 네트워크의 시스템 관리자입니다. 소셜 네트워크에서는 보안이 매우 중요합니다. 가장 큰 위협 중 하나는 사용자의 비밀번호를 훔쳐 스팸을 보내거나 다른 나쁜 짓을 하는 스패머입니다.

V Contacts의 보안 정책에 따르면 모든 비밀번호는 정확히 다섯 글자이며, 각 글자는 영어 소문자, 영어 대문자, 또는 숫자입니다. Vasya는 비밀번호 데이터베이스가 얼마나 안전한지 측정하려고 합니다. 그 척도는 비밀번호들이 서로 얼마나 비슷한지에 기반합니다. 즉, 완전히 같은 비밀번호 쌍은 몇 개인지, 정확히 한 자리에서 다른 쌍은 몇 개인지, 정확히 두 자리에서 다른 쌍은 몇 개인지 등을 셉니다.

두 비밀번호는 같은 자리끼리 비교합니다. 서로 다른 자리의 개수(해밍 거리)는 00(완전히 같음)부터 55(모든 자리가 다름)까지의 값을 가집니다. 00부터 55까지의 각 거리 ii에 대해, 거리가 정확히 ii인 비밀번호의 순서 없는 쌍의 개수를 구하세요.

입력

첫 번째 줄에 정수 nn이 주어집니다. nn은 V Contacts 사용자의 수입니다 (1≤n≤500001 \le n \le 50000).

이어지는 nn개의 줄에는 각각 비밀번호가 하나씩 주어집니다. 각 비밀번호는 정확히 다섯 글자이며, 각 글자는 영어 소문자, 영어 대문자, 또는 숫자입니다. 대소문자를 구분하며, 같은 비밀번호가 여러 번 나올 수 있습니다.

출력

여섯 개의 정수 a0,a1,a2,a3,a4,a5a_0, a_1, a_2, a_3, a_4, a_5를 한 줄에 공백 하나로 구분하여 출력하세요. 여기서 aia_i는 정확히 ii개의 자리에서 다른 비밀번호의 순서 없는 쌍의 개수입니다. 특히 a0a_0은 완전히 같은 비밀번호 쌍의 개수를 셉니다.

예제2

  1. 예제 1

    입력
    3
    abcde
    ABCDE
    12345
    
    예상 출력
    0 0 0 0 0 3
    
  2. 예제 2

    입력
    7
    aaaaa
    aaaaa
    aaaa1
    aaaA2
    aaBCD
    a6543
    XxXxX
    
    예상 출력
    1 2 3 4 5 6