블록 게임

시간 제한2초메모리 제한512 MB

요약
각 보드에서 한 단어씩 어떤 조합이 위로 향하든 모든 단어를 동시에 만들 수 있도록, 알파벳 26개 각각에 필요한 블록의 최소 개수를 구한다.
난이도

보통10점 중 5점

유형
완전 탐색, 비트 연산
정답자
아직 제출이 없습니다

문제

농부 존은 소들에게 글자를 가르치려고 유아용 단어 카드 NN장을 준비했다 (1≤N≤1001 \le N \le 100). 카드의 각 면에는 단어 하나와 그림 하나가 있다. 예를 들어 한 면에는 'cat'이라는 단어와 고양이 그림이, 반대 면에는 'dog'이라는 단어와 개 그림이 있다. 카드 NN장을 바닥에 늘어놓으면 위를 향한 단어 NN개가 보인다. 카드 몇 장을 뒤집으면 다른 단어 NN개가 드러난다.

존은 알파벳 한 글자씩 새긴 나무 블록을 만들려고 한다. 위를 향한 단어 NN개가 어떤 조합으로 나와도 소들이 그 단어 NN개를 블록으로 한꺼번에 늘어놓을 수 있도록, 글자마다 블록을 넉넉히 준비하려고 한다. 예를 들어 N=3N=3이고 위를 향한 단어가 'box', 'cat', 'car'라면 'b' 1개, 'o' 1개, 'x' 1개, 'c' 2개, 'a' 2개, 't' 1개, 'r' 1개가 필요하다.

카드가 어느 면을 위로 하고 있어도 보이는 단어 NN개를 모두 만들 수 있도록, 알파벳 26글자마다 존이 준비해야 하는 블록의 최소 개수를 구하시오.

입력

첫째 줄에 정수 NN이 주어진다.

다음 NN개의 줄에는 카드 한 장의 양면에 적힌 단어 두 개가 공백을 두고 주어진다. 각 단어는 길이가 10 이하인 영어 소문자 문자열이다.

출력

26개의 줄을 출력한다. 첫째 줄에는 'a' 블록이 몇 개 필요한지, 둘째 줄에는 'b' 블록이 몇 개 필요한지 출력하고, 같은 방식으로 'z'까지 출력한다.

힌트

카드가 3장이면 위를 향한 단어의 조합은 23=82^3 = 8가지다. 양면이 (fox, box), (dog, cat), (car, bus)인 카드 3장이라면 다음 8가지가 나올 수 있다.

  • fox dog car
  • fox dog bus
  • fox cat car
  • fox cat bus
  • box dog car
  • box dog bus
  • box cat car
  • box cat bus

여덟 가지 중 어느 경우가 나와도 단어 세 개를 모두 만들 수 있을 만큼 글자별 블록이 있어야 한다.

예제2

  1. 예제 1

    입력
    3
    fox box
    dog cat
    car bus
    
    예상 출력
    2
    2
    2
    1
    0
    1
    1
    0
    0
    0
    0
    0
    0
    0
    2
    0
    0
    1
    1
    1
    1
    0
    0
    1
    0
    0
    
  2. 예제 2

    입력
    1
    a b
    
    예상 출력
    1
    1
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0