만드는 중입니다

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

단어 게임

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

요약
소문자 단어 최대 5개를 접미사와 접두사가 겹치도록 두 개씩 합쳐, 가능한 가장 짧은 단어 하나를 만드는 문제입니다. 길이가 같으면 사전순으로 가장 앞선 단어를 고르고, 불가능하면 -1을 출력합니다.
난이도

보통10점 중 5점

유형
완전 탐색, 문자열, 문자열 매칭, 재귀
정답자
아직 제출이 없습니다

문제

Word Game 쇼에서 Ashley는 nn개의 단어를 고르고 Brandon에게 이 단어들을 합치라고 한다. 두 단어 ss와 tt는 ss의 접미사 중 길이가 k>0k > 0이고 tt의 접두사인 것이 있으면 합칠 수 있다. 합친 결과는 ss 뒤에 tt의 마지막 ∣t∣−k|t|-k 글자를 이어 붙인 새 단어이다. 유효한 kk가 여러 개라면 아무 값이나 고를 수 있다.

Brandon은 합칠 수 있는 단어 쌍을 목록에서 반복해서 골라, 두 단어를 합친 단어로 목록의 두 단어를 바꾼다. 목록에 단어가 하나만 남을 때까지 이 과정을 반복하며, 최종 단어는 가능한 한 짧아야 한다. 같은 길이의 최종 단어가 여러 개 가능하면 Brandon은 사전순으로 가장 앞선 단어를 찾아야 한다.

입력

첫 줄에 처음 단어의 개수를 나타내는 정수 nn (1≤n≤5)(1 \le n \le 5)이 주어진다. 이어서 nn개의 줄에 각각 길이가 최대 5인 소문자 단어가 하나씩 주어진다.

출력

Brandon이 만들 수 있는 단어 중 길이가 가장 짧은 것 가운데 사전순으로 가장 앞선 단어를 출력한다. 단어 하나로 만들 수 없으면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    2
    aba
    bab
    
    예상 출력
    abab
    
  2. 예제 2

    입력
    3
    ab
    bc
    ca
    
    예상 출력
    abca
    
  3. 예제 3

    입력
    2
    x
    y
    
    예상 출력
    -1