단어 합치기

시간 제한5초메모리 제한128 MB

요약
대문자 단어가 최대 12개 주어질 때 모든 단어를 부분 문자열로 포함하는 가장 짧은 문자열을 찾고, 여러 개면 사전순으로 가장 작은 것을 출력합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 비트 연산, 문자열, 문자열 매칭
정답자
아직 제출이 없습니다

문제

알파벳 대문자로만 이루어진 단어 N개가 주어진다. 모든 주어진 단어를 부분문자열로 포함하는 문자열 중 길이가 가장 짧은 문자열을 출력하라.

입력

첫째 줄에 단어의 개수 N(1 <= N <= 12)이 주어진다. 둘째 줄부터 N개의 줄에는 알파벳 대문자로만 이루어진 단어가 한 줄에 하나씩 주어진다. 각 단어의 길이는 50 이하이다.

출력

첫째 줄에 정답을 출력한다. 가능한 정답이 여러 개라면 사전순으로 가장 앞서는 문자열을 출력한다.

예제6

  1. 예제 1

    입력
    2
    BAB
    ABA
    
    예상 출력
    ABAB
    
  2. 예제 2

    입력
    4
    ABABA
    AKAKA
    AKABAS
    ABAKA
    
    예상 출력
    ABABAKAKABAS
    
  3. 예제 3

    입력
    6
    AAA
    BBB
    CCC
    ABC
    BCA
    CAB
    
    예상 출력
    AAABBBCABCCC
    
  4. 예제 4

    입력
    2
    STRING
    RING
    
    예상 출력
    STRING
    
  5. 예제 5

    입력
    8
    OFG
    SDOFGJTILM
    KBWNF
    YAAPO
    AWX
    VSEAWX
    DOFGJTIL
    YAA
    
    예상 출력
    KBWNFSDOFGJTILMVSEAWXYAAPO
    
  6. 예제 6

    입력
    8
    NVCSKFLNVS
    HUFSPMRI
    FLNV
    KMQD
    RPJK
    NVSQORP
    UFSPMR
    AIHUFSPMRI
    
    예상 출력
    AIHUFSPMRINVCSKFLNVSQORPJKMQD