동물 맞히기

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

요약
N마리 동물과 각각의 특징이 주어질 때, 질문으로 한 마리만 남을 때까지 엘시가 들을 수 있는 '예' 답변의 최댓값을 구한다.
난이도

보통10점 중 6점

유형
구현, 그리디, 해시맵, 완전 탐색
정답자
아직 제출이 없습니다

문제

평소 하던 야바위 놀이가 지겨워진 암소 Bessie와 친구 Elsie는 "동물 맞히기"라는 또 다른 흔한 놀이를 즐긴다.

먼저 Bessie가 어떤 동물을 마음속으로 정한다(대부분은 소라서 게임이 좀 시시하지만, Bessie가 창의적으로 나서면 다른 동물일 때도 있다). 그러면 Elsie가 질문을 이어 가며 Bessie가 무엇을 골랐는지 알아낸다. 각 질문은 그 동물이 특정한 특징을 가지고 있는지 묻는 것이고, Bessie는 모든 질문에 "yes" 또는 "no"로 답한다. 예를 들어:

Elsie: "그 동물은 날아?
Bessie: "아니" 
Elsie: "그 동물은 풀을 먹어?" 
Bessie: "응" 
Elsie: "그 동물은 우유를 만들어?"
Bessie: "응" 
Elsie: "그 동물은 음매 하고 울어?" 
Bessie: "응" 
Elsie: "그러면 그 동물은 소인 것 같아." 
Bessie: "정답!"

지금까지 Elsie의 질문과 모순되지 않는 모든 동물의 집합을 "가능 집합"이라 하면, Elsie는 가능 집합에 동물이 하나만 남을 때까지 질문을 계속하고, 그다음 그 동물을 답으로 말한다. 각 질문에서 Elsie는 가능 집합에 속한 어떤 동물의 특징 하나를 골라 묻는다(그 특징이 가능 집합을 더 좁히는 데 도움이 되지 않더라도 상관없다). 같은 특징을 두 번 묻지는 않는다.

Bessie와 Elsie가 아는 모든 동물과 그 특징이 주어질 때, Elsie가 정답을 알기 전까지 받을 수 있는 "yes" 답변의 최대 개수를 구하여라.

입력

첫째 줄에 동물의 수 NN이 주어진다(2≤N≤1002 \leq N \leq 100). 다음 NN개의 줄에 각각 동물 하나가 주어진다. 줄은 동물 이름으로 시작하고, 그다음 정수 KK(1≤K≤1001 \leq K \leq 100), 그다음 그 동물의 특징 KK개가 이어진다. 동물 이름과 특징은 길이 20 이하의 알파벳 소문자(a..z)로 이루어진 문자열이다. 특징이 완전히 같은 동물 두 마리는 없다.

출력

게임이 끝나기 전까지 Elsie가 받을 수 있는 "yes" 답변의 최대 개수를 출력하여라.

힌트

이 예에서 Elsie는 "yes" 답변이 3개인 대화 기록을 만들 수 있고(위의 예), "yes" 답변이 3개를 넘는 대화 기록은 만들 수 없다.

예제1

  1. 예제 1

    입력
    4
    bird 2 flies eatsworms
    cow 4 eatsgrass isawesome makesmilk goesmoo
    sheep 1 eatsgrass
    goat 2 makesmilk eatsgrass
    
    예상 출력
    3