해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
245
MB
어떤 문자열의 부분 문자열 중, 그 등장 횟수가 다른 어떤 부분 문자열의 등장 횟수보다도 적지 않은 것을 최빈 부분 문자열이라고 한다.
문자열의 집합이 주어진다. 어떤 문자열이 이 집합의 모든 원소를 자신의 최빈 부분 문자열로 가지면, 그 문자열이 이 집합에 속할 필요는 없으며 이를 좋은 문자열이라고 한다. 길이가 최소인 비어 있지 않은 좋은 문자열을 복원한다. 그러한 문자열이 여러 개라면 사전순으로 가장 작은 문자열을 복원한다. 좋은 문자열이 없다면 "NO"을 따옴표 없이 출력한다.
문자열의 부분 문자열은 그 문자열에서 연속한 문자들로 이루어진 부분 수열이다. 예를 들어 "ab", "c", "abc"은 문자열 "abc"의 부분 문자열이지만, "ac"은 그 문자열의 부분 문자열이 아니다.
문자열에서 어떤 부분 문자열의 등장 횟수는 그 부분 문자열이 나타나는 시작 위치의 개수이다. 이러한 등장들은 서로 겹칠 수 있다.
문자열 a가 문자열 b의 접두사이거나, a와 b가 처음으로 다른 위치에서 a의 문자가 더 작으면 문자열 a는 문자열 b보다 사전순으로 작다.
첫 번째 줄에는 집합에 포함된 문자열의 개수를 나타내는 정수 n (1 ≤ n ≤ 105)이 주어진다.
이어지는 n개의 각 줄에는 영문 소문자로 이루어진 비어 있지 않은 문자열이 주어진다. 문자열들은 서로 다름이 보장된다.
문자열들의 총길이는 105를 초과하지 않는다.
길이가 최소인 비어 있지 않은 좋은 문자열을 출력한다. 그러한 좋은 문자열이 여러 개라면 그중 사전순으로 가장 작은 것을 출력한다. 좋은 문자열이 없다면 "NO"을 따옴표 없이 출력한다.
3
kek
preceq
cheburek
NO
4
mail
ai
lru
cf
cfmailru
첫 번째 예제에서 길이가 최소인 좋은 문자열은 "cfmailru"과 "mailrucf"뿐임을 보일 수 있다. 첫 번째 문자열이 사전순으로 가장 작다.