파일 업로드

첫번째!

profile
실행 시간 제한메모리 제한
1 초128 MB
📃 해결할 문제

철수는 문자열을 이용한 놀이를 하고 있습니다. 그는 알파벳의 순서를 변경함으로써, 일부 문자열을 사전 순서로 모든 다른 문자열보다 앞에 놓을 수 있음을 발견했습니다.

예를 들어, 그는 문자열 'omm', 'moo', 'mom', 'ommnom'에 대해 표준 알파벳을 사용하면 'mom'을 첫 번째로 놓을 수 있었고, 알파벳 'abcdefghijklonmpqrstuvwxyz'를 사용하면 'omm'을 먼저 만들 수 있었습니다. 그러나 그는 'moo'나 'ommnom'을 먼저 만드는 방법을 알아내지 못했습니다.

알파벳의 순서를 재배열하여 입력된 문자열 중에서 사전순으로 첫 번째가 될 수 있는 문자열을 계산하여 그를 돕습니다. 문자열 X가 문자열 Y보다 사전적으로 앞서는지 계산하려면, 두 문자열이 다른 첫 번째 문자의 인덱스 j를 찾습니다. 이러한 인덱스가 존재하지 않으면 X는 Y보다 짧은 경우에 X가 Y보다 사전적으로 앞섭니다. 그렇지 않은 경우, X가 Y보다 사전순으로 앞에 옵니다. 이는 X[j]가 알파벳에서 Y[j]보다 앞에 나타난다면 적용됩니다.

💻 입력
  • 줄 1: 철수가 놀고 있는 문자열의 수인 N (1 <= N <= 30,000)이 포함된 단일 줄.
  • 줄 2..1+N: 각 줄에는 비어 있지 않은 문자열이 포함됩니다. 모든 문자열의 총 문자 수는 300,000을 초과하지 않습니다. 입력된 모든 문자는 소문자 'a'부터 'z'까지입니다. 입력에는 중복 문자열이 없습니다.
🖨️ 출력
  • 1번째 줄 : 사전순으로 첫 번째가 될 수 있는 문자열의 수인 K를 포함하는 단일 라인.
  • 2번째 줄..1+K번째 줄 : (1+i)번째 줄은 사전적으로 첫 번째가 될 수 있는 i번째 문자열을 포함해야 합니다. 문자열은 입력에서 주어진 순서대로 출력해야합니다.

💻 예제 입력 1
4
omm
moo
mom
ommnom
🖨️ 예제 출력 1
2
omm
mom

출처: USACO 2012 December Contest, Gold Problem 2. First!