블록 게임
시간 제한2초메모리 제한512 MB
각 보드에서 한 단어씩 어떤 조합이 위로 향하든 모든 단어를 동시에 만들 수 있도록, 알파벳 26개 각각에 필요한 블록의 최소 개수를 구한다.
문제
농부 존은 소들에게 글자를 가르치려고 유아용 단어 카드 장을 준비했다 (). 카드의 각 면에는 단어 하나와 그림 하나가 있다. 예를 들어 한 면에는 'cat'이라는 단어와 고양이 그림이, 반대 면에는 'dog'이라는 단어와 개 그림이 있다. 카드 장을 바닥에 늘어놓으면 위를 향한 단어 개가 보인다. 카드 몇 장을 뒤집으면 다른 단어 개가 드러난다.
존은 알파벳 한 글자씩 새긴 나무 블록을 만들려고 한다. 위를 향한 단어 개가 어떤 조합으로 나와도 소들이 그 단어 개를 블록으로 한꺼번에 늘어놓을 수 있도록, 글자마다 블록을 넉넉히 준비하려고 한다. 예를 들어 이고 위를 향한 단어가 'box', 'cat', 'car'라면 'b' 1개, 'o' 1개, 'x' 1개, 'c' 2개, 'a' 2개, 't' 1개, 'r' 1개가 필요하다.
카드가 어느 면을 위로 하고 있어도 보이는 단어 개를 모두 만들 수 있도록, 알파벳 26글자마다 존이 준비해야 하는 블록의 최소 개수를 구하시오.
입력
첫째 줄에 정수 이 주어진다.
다음 개의 줄에는 카드 한 장의 양면에 적힌 단어 두 개가 공백을 두고 주어진다. 각 단어는 길이가 10 이하인 영어 소문자 문자열이다.
출력
26개의 줄을 출력한다. 첫째 줄에는 'a' 블록이 몇 개 필요한지, 둘째 줄에는 'b' 블록이 몇 개 필요한지 출력하고, 같은 방식으로 'z'까지 출력한다.
힌트
카드가 3장이면 위를 향한 단어의 조합은 가지다. 양면이 (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
여덟 가지 중 어느 경우가 나와도 단어 세 개를 모두 만들 수 있을 만큼 글자별 블록이 있어야 한다.