새로운 가게 이름

두 짧은 문자열을 각각 겹치지 않는 두 조각으로 잘라 A+C와 B+D가 같아지도록 만들고, 가장 길면서 사전순으로 가장 앞선 이름을 출력한다.

어려움8문자열완전 탐색동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

강호와 준규가 각자 하던 가게를 정리하고 힘을 합쳐 새로운 가게를 열었다.

오늘은 새 가게의 이름을 정하려고 한다. 두 사람은 예전에 쓰던 가게 간판을 그대로 가지고 있고, 이 간판을 잘라서 새 가게의 이름을 만들려고 한다. 이름을 만드는 과정은 다음과 같다. 이때 대문자와 소문자는 서로 다른 문자로 구분한다.

  • 강호의 간판에서 조각 두 개를 잘라낸다. 각 조각은 비어 있지 않은 연속한 부분 문자열이어야 하고, 두 조각은 간판 위에서 서로 겹치지 않아야 한다. 예를 들어 간판에 "abCDeF"가 쓰여 있을 때 "bC"와 "e"로 잘라내거나 "CDeF"와 "ab"로 잘라낼 수 있다. 하지만 "aC"와 "eF"는 "aC"가 연속하지 않아서 불가능하고, "abCD"와 ""는 빈 문자열을 포함해서 불가능하며, "DeF"와 "CD"는 두 조각이 겹쳐서 불가능하다. 이렇게 강호의 간판에서 잘라낸 문자열을 각각 A와 B라고 한다.
  • 준규의 간판에서도 같은 규칙으로 조각 두 개를 잘라낸다. 잘라낸 문자열을 각각 C와 D라고 한다.
  • A + C와 B + D는 같아야 하고, 이 문자열이 새 가게의 이름이 된다. 여기서 +는 문자열을 이어 붙이는 연산이다.

강호의 간판에 쓰여 있는 문자열 X와 준규의 간판에 쓰여 있는 문자열 Y가 주어졌을 때, 가능한 새 가게 이름 중에서 가장 긴 것을 구하는 프로그램을 작성하시오. 길이가 가장 긴 이름이 여러 개라면 사전 순으로 앞서는 것을 고른다. 사전 순은 아스키 코드 순서를 따르므로 모든 대문자가 모든 소문자보다 앞선다.

입력

첫째 줄에 강호의 문자열 X와 준규의 문자열 Y가 공백 하나로 구분되어 주어진다. 두 문자열의 길이는 각각 1 이상 47 이하이고, 알파벳 대문자와 소문자로만 이루어져 있다.

출력

가능한 새 가게 이름 중에서 가장 긴 것을 출력한다. 길이가 가장 긴 이름이 여러 개라면 사전 순으로 앞서는 것을 출력한다.

가능한 이름이 없으면 -1을 출력한다.