만드는 중입니다

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

팰린드롬

면접 대비

시간 제한1초메모리 제한256 MB

요약
서로 다른 위치의 두 단어를 순서대로 이어 붙여 팰린드롬이 되는 경우 중 사전 순으로 가장 작은 것을 출력합니다.
난이도

쉬움10점 중 3점

유형
완전 탐색, 문자열, 투 포인터
정답자
아직 제출이 없습니다

문제

팰린드롬은 앞에서 읽으나 뒤에서 읽으나 똑같은 단어이다. 예를 들어 civic, radar, rotor, madam은 모두 팰린드롬이다.

공책에 소문자 알파벳으로 이루어진 단어 kk개가 적혀 있다. 이 단어들 중 서로 다른 위치에 있는 두 단어를 골라 앞뒤로 이어 붙였을 때 팰린드롬이 되는 경우를 찾으려고 한다. 즉, 서로 다른 두 인덱스 i≠ji \ne j에 대해 ii번째 단어 바로 뒤에 jj번째 단어를 이어 붙인 문자열이 팰린드롬인지 확인한다. (같은 단어를 두 번 사용할 수는 없다.)

예를 들어 단어가 aaba, ba, ababa, bbaa, baaba일 때, ababa 뒤에 ba를 이어 붙이면 팰린드롬 abababa를 만들 수 있다.

kk개의 단어가 주어졌을 때 이러한 팰린드롬을 찾는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스의 첫째 줄에는 공책에 적힌 단어의 수 kk (1≤k≤1001 \le k \le 100)가 주어진다. 이어지는 kk개의 줄에는 a부터 z까지의 소문자 알파벳으로 이루어진 단어가 한 줄에 하나씩 주어진다. 한 테스트 케이스에 등장하는 모든 단어 길이의 합은 10,000 이하이다.

출력

각 테스트 케이스마다 만들 수 있는 팰린드롬을 한 줄에 하나씩 출력한다. 만들 수 있는 팰린드롬이 여러 개라면 사전순으로 가장 앞서는 것을 출력한다. 팰린드롬을 만들 수 없으면 0을 출력한다.

예제5

  1. 예제 1

    입력
    2
    5
    aaba
    ba
    ababa
    bbaa
    baaba
    3
    abc
    bcd
    cde
    
    예상 출력
    abababa
    0
    
  2. 예제 2

    입력
    1
    1
    abc
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1
    2
    aa
    aa
    
    예상 출력
    aaaa
    
  4. 예제 4

    입력
    1
    2
    ab
    cd
    
    예상 출력
    0
    
  5. 예제 5

    입력
    1
    3
    ab
    ba
    a
    
    예상 출력
    aba