만드는 중입니다

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

요약문

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

요약
각 글에서 다른 글에는 나타나지 않는 가장 짧은 부분 문자열을 찾습니다. 길이가 같으면 사전순으로 앞선 것을 고르고, 없으면 ?를 출력합니다.
난이도

어려움10점 중 8점

유형
문자열, 문자열 매칭
정답자
아직 제출이 없습니다

문제

플로렌과 친구들은 영어 수업에서 기사를 하나씩 받아 각자 요약문을 써야 합니다. 이 문제에서 기사는 영어 소문자로만 이루어진 비어 있지 않은 문자열입니다. 요약문은 해당 기사의 비어 있지 않은 부분 문자열입니다. 선생님은 각 요약문이 자기 기사 이외의 어떤 기사에서도 부분 문자열로 나타나지 않기를 요구합니다. 친구들은 각 기사에 대해 다른 기사의 부분 문자열이 아닌 가장 짧은 요약문을 원합니다. 가장 짧은 요약문이 여러 개라면 사전순으로 가장 앞선 것을 고릅니다. 조건을 만족하는 요약문이 없으면 그렇다고 알려야 합니다.

입력

첫 줄에 기사의 개수 nn이 주어집니다 (1≤n≤100 0001 \leq n \leq 100\,000). 다음 nn개 줄에는 기사 sis_i가 한 줄에 하나씩 주어집니다. sis_i는 영어 소문자로 이루어진 문자열이고 1≤∣si∣≤500 0001 \leq |s_i| \leq 500\,000입니다. L=∑i=1n∣si∣L = \sum_{i=1}^{n} |s_i|라고 할 때, 모든 테스트에서 L≤500 000L \leq 500\,000이 보장됩니다.

출력

입력 순서대로 각 기사의 요약문을 한 줄에 하나씩 nn줄 출력합니다. 조건을 만족하는 요약문이 없는 기사에는 ?를 출력합니다.

힌트

이는 첫 번째 예제에 대한 설명입니다. 첫 번째 기사의 모든 부분 문자열이 네 번째 기사에 포함되므로, 첫 번째 기사에는 조건을 만족하는 요약문이 없습니다. 두 번째 기사에서 가장 짧은 유효한 요약문은 de, ee, er이며, 그중 사전순으로 가장 작은 것은 de입니다. 세 번째 기사에서 가장 짧은 유효한 요약문은 re와 ad이고, 사전순으로는 ad가 앞섭니다. 네 번째 기사에서 가장 짧은 유효한 요약문은 rd 하나뿐입니다.

예제2

  1. 예제 1

    입력
    4
    bear
    deer
    read
    beard
    
    예상 출력
    ?
    de
    ad
    rd
    
  2. 예제 2

    입력
    3
    xerox
    roxwill
    williams
    
    예상 출력
    e
    xw
    a