i18n

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

문제

국제화(internationalization)와 지역화(localization)는 긴 단어라서 보통 i18n, l10n으로 줄여 씁니다. 첫 글자와 마지막 글자 사이에 있는 숫자는 생략된 글자의 개수를 뜻합니다. 이 축약 방식은 어떤 단어에도 자연스럽게 적용할 수 있는 매우 강력한 방법입니다.

단어는 그 단어가 텍스트에서 앞서 등장한 적이 있을 때에만 축약할 수 있습니다. 단어를 축약할 때에는 첫 글자와 마지막 글자만 남기고, 그 사이의 모든 글자를 생략된 글자 수로 바꿉니다.

여러분이 할 일은 주어진 텍스트에서 이러한 축약형을 가능한 경우마다 원래 단어로 되돌리는 프로그램을 작성하는 것입니다. 축약형은 그 확장이 유효하고(valid) 모호하지 않을(unambiguous) 때에만 확장할 수 있습니다.

  • 확장이 유효하다는 것은, 확장한 완전한 단어가 텍스트에서 앞서 등장한 적이 있고 그 단어의 축약형이 지금 확장하려는 축약형과 일치한다는 뜻입니다. 유효성을 판단할 때 대소문자는 무시합니다. 예를 들어 i18ninternationalization으로 확장하는 것은 유효합니다(앞에서 internationalization이 대문자 I로만 등장했더라도 마찬가지입니다). 반면 p14nparameterization으로 확장하는 것은 유효하지 않습니다. parameterization이 그 축약형보다 앞서 등장한 적이 없기 때문입니다. 또한 a11nabbreviation으로 확장하는 것도 유효하지 않습니다. a11nabbreviation의 올바른 축약형이 아니기 때문입니다(올바른 축약형은 a10n입니다).
  • 확장이 모호하지 않다는 것은, 유효한 확장이 정확히 하나뿐이라는 뜻입니다. 예를 들어 l10nlocalization으로 모호함 없이 확장되지만, p5mproblemprogram이 모두 p5m으로 축약되기 때문에 모호함 없이 확장할 수 없습니다.

입력

입력은 최대 1000줄이며, 각 줄은 최대 80자입니다. 각 줄은 하나 이상의 단어로 이루어지며, 단어는 공백과 특수 기호 -, ,, ., ", (, ), :, ;, !, ?로 구분됩니다. 줄 끝에 공백은 없지만, 다른 구분 기호는 줄 끝에 올 수 있습니다.

각 단어는 완전한 단어이거나 축약된 단어입니다.

  • 완전한 단어는 1자에서 32자 사이의 라틴 문자로 이루어지며, 세 가지 대소문자 형태 중 하나로 나타납니다: 모두 소문자, 첫 글자만 대문자, 또는 모두 대문자.
  • 축약된 단어는 라틴 문자 한 개, 2 이상 30 이하의 숫자(맨 앞에 0은 오지 않음), 라틴 문자 한 개로 이루어집니다. 축약된 단어도 이에 대응하는 세 가지 대소문자 형태를 가집니다: all l7e, F3t C5l L4r, 또는 ALL C5L L5S.

출력

원래의 구분 기호를 그대로 유지한 채 원문을 출력하되, 가능한 경우마다 축약된 단어를 완전한 단어로 확장합니다(위 설명 참고). 확장된 단어의 대소문자는 그 단어가 대체하는 축약형의 대소문자와 일치해야 합니다.

유효하지 않거나 모호한 축약형은 축약된 상태 그대로 둡니다. 출력의 각 줄은 80자보다 길어질 수 있습니다.