만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

불만 많은 손님

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

요약
주문 기록과 일부만 보이는 주문서가 주어질 때, 특정 테이블의 주문서가 모두 해당 메뉴인지 판정하고 아니면 뒤집어 볼 최소 주문서를 찾습니다.
난이도

보통10점 중 7점

유형
그래프, 문자열, 해시맵
정답자
아직 제출이 없습니다

문제

Diana는 Batavian Authentic Prestigious Cuisine의 주방장입니다. 모든 주문은 중앙 컴퓨터에 기록됩니다. 주방을 정리하기 위해 주문된 메뉴는 각각 별도의 주문표에도 인쇄됩니다. Diana는 각 주문표 뒷면에 테이블 번호를 적어, 서빙하는 직원이 음식을 어디로 가져갈지 확인할 수 있게 합니다. 주문표의 조리가 끝나면 Diana는 이를 게시판에 붙입니다. 같은 테이블이 같은 메뉴를 여러 번 주문할 수 있으므로 중복된 주문표가 있을 수 있습니다.

영업 중반에 불만이 많은 손님이 항의합니다. "몇 시간이나 기다렸는데 지금까지 토마토 수프만 나왔어요! 좀 서둘러 주시겠어요?" 식당의 평판이 걸려 있으므로 Diana는 즉시 대응해야 합니다. 하지만 과거에 일부 손님이 빠른 서빙을 받으려고 거짓말을 한 적이 있으므로, 주방 직원에게 지시하기 전에 이 항의를 먼저 검증해야 합니다.

게시판은 항상 최신 상태이므로, 검증은 관련 주문표를 확인하는 일입니다. tt와 mm을 항의에 담긴 테이블 번호와 메뉴라고 합시다. Diana가 검증하려는 주장은 "테이블 tt의 게시된 모든 주문표는 메뉴 mm에 해당한다"입니다. 테이블 tt에 완료된 주문표가 없으면 이 주장은 참으로 봅니다. 손님이 잘못 말했을 수도 있지만, 그래도 특별한 관심을 받을 자격은 있습니다.

게시판에서는 각 주문표의 한쪽 면, 즉 메뉴 또는 테이블 번호만 보입니다. Diana에게는 수백 장의 주문표를 뒤집을 시간이 없습니다. 중앙 컴퓨터와 대조하면 안전하게 무시할 수 있는 주문표도 있습니다. 뒤집어야 하는 게시된 주문표의 최소 집합을 구하십시오. 또는 주문표를 한 장도 뒤집지 않고 주장을 증명하거나 반증할 수 있는지 판단하십시오. Diana는 뒤집기 시작하기 전에 어느 주문표를 뒤집을지 정해야 합니다. 그녀는 즉석에서 추론할 여유가 없기 때문입니다.

입력

입력은 다음과 같습니다.

  • 첫 줄에 정수 nn과 kk가 주어집니다 (1≤k≤n≤5001 \le k \le n \le 500). nn은 컴퓨터에 기록된 주문 수이고, kk는 게시된 주문표 수입니다.
  • 둘째 줄에는 컴퓨터에 기록된 주문을 나타내는 문자열 nn개가 주어집니다. 각 문자열은 영문 대문자 한 글자(메뉴, A-Z)와 숫자 한 글자(테이블 번호, 0-9)로 이루어집니다.
  • 셋째 줄에는 게시된 주문표를 나타내는 문자 kk개가 주어집니다. 각 문자는 영문 대문자 또는 숫자입니다.
  • 넷째 줄에는 숫자 tt(0-9)와 영문 대문자 mm(A-Z)이 주어지며, 주장 "테이블 tt의 게시된 모든 주문표는 메뉴 mm에 해당한다"를 지정합니다.

게시된 주문표는 컴퓨터에 있는 주문의 (부분집합에) 대응한다고 보장됩니다.

출력

주문표를 한 장도 뒤집지 않고 주장이 명확히 참 또는 거짓임을 증명할 수 있으면 각각 true 또는 false를 출력합니다. 그렇지 않으면 뒤집어야 하는 게시된 주문표의 최소 개수를 출력하고, 이어서 그 주문표들의 1부터 시작하는 번호를 순서에 상관없이 출력합니다.

예제3

  1. 예제 1

    입력
    6 4
    A1 A2 B1 B2 C1 C2
    A B 1 2
    1 A
    
    예상 출력
    2
    3 2
    
  2. 예제 2

    입력
    5 4
    A1 B1 C2 C1 A2
    2 A B 1
    1 A
    
    예상 출력
    false
    
  3. 예제 3

    입력
    4 4
    Z0 Z0 F9 F9
    Z 0 9 9
    4 F
    
    예상 출력
    true