팀원 모집

최대 10명 중 모든 문제를 풀 수 있는 가장 적은 인원을 고르고, 불가능하면 -1을 출력합니다.

쉬움3완전 탐색비트 연산면접 대비아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

2015년 11월 28일은 기다리고 기다리던 제1회 IUPC가 열리는 날이다. IUPC는 Inha University Programming Contest의 약자로, 인하대학교 IT공대 학부생이면 누구나 참가할 수 있는 프로그래밍 경시대회다. 총상금은 110억 원이고, 점심과 다과가 나오며, 수많은 팀에게 추첨으로 문화상품권을 나눠준다.

이 대회가 다른 대회와 다른 점은 두 가지다. 문제가 아주 많고, 팀원 수에 제한이 없다.

컴퓨터정보공학과에 재학 중인 강호는 이 대회에 나갈 팀원을 모으려고 한다. 강호는 모든 문제를 다 풀어 우승하고 싶다. 다만 팀원이 많아질수록 자기에게 돌아오는 상금이 줄어들기 때문에, 가능한 한 적은 인원으로 우승하려고 한다.

강호가 팀원으로 고를 수 있는 학생의 목록과 각 학생이 풀 수 있는 문제의 번호가 주어진다. 대회에 나오는 문제를 모두 풀 수 있는 팀 중에서 인원이 가장 적은 팀을 만들어 보자.

입력

첫째 줄에 문제의 수 NN과 강호가 팀원으로 고를 수 있는 학생의 수 MM이 공백을 사이에 두고 차례대로 주어진다. NNMM은 1 이상 10 이하의 자연수다.

둘째 줄부터 MM개의 줄에 학생 정보가 차례대로 주어진다. 그중 ii번째 줄에는 ii번 학생이 풀 수 있는 문제의 개수 OiO_i가 먼저 나오고, 이어서 그 학생이 풀 수 있는 문제의 번호 Pi1,Pi2,,PiOiP_{i1}, P_{i2}, \ldots, P_{iO_i}가 공백을 사이에 두고 주어진다. 여기서 1iM1 \le i \le M, 1jOi1 \le j \le O_i, 1PijN1 \le P_{ij} \le N이다.

출력

모든 문제를 풀 수 있으면서 인원이 가장 적은 팀을 찾아, 그 팀의 인원수를 출력한다. 모든 문제를 풀 수 있는 팀을 만들 수 없다면 -1을 출력한다.

힌트

첫 번째 예제에서 3번 학생과 4번 학생을 뽑으면 1번부터 5번까지 모든 문제를 푸는 팀이 된다. 1번, 2번, 4번 학생을 뽑아도 모든 문제를 풀 수 있지만, 인원이 3명이라 답이 될 수 없다.