숙제로, 여러 단어의 뜻을 알려 주는 프로그램을 작성해야 합니다. 모든 단어의 정의를 일일이 저장하는 대신, 몇 개의 어근(root)에 대한 정의만 저장하고 흔히 쓰이는 접두사와 접미사를 인식합니다. 이 프로그램은 한 단어에서 접두사와 접미사를 각각 최대 하나씩만 인식하므로, 외워 두는 정의의 수를 적게 유지하면서도 각 어근의 여러 형태를 처리할 수 있습니다.
이 문제에서는 프로그램의 접두사·접미사 처리 부분을 구현합니다. 아래 표에서 <word>는 어근을 나타내며, 각 뜻(meaning)은 프로그램이 그대로 출력해야 하는 영어 문구입니다.
인식하는 접두사와 그 뜻은 다음과 같습니다.
| Prefix | Meaning |
|---|---|
| anti<word> | against <word> |
| post<word> | after <word> |
| pre<word> | before <word> |
| re<word> | <word> again |
| un<word> | not <word> |
인식하는 접미사와 그 뜻은 다음과 같습니다.
| Suffix | Meaning |
|---|---|
| <word>er | one who <word>s |
| <word>ing | to actively <word> |
| <word>ize | change into <word> |
| <word>s | multiple instances of <word> |
| <word>tion | the process of <word>ing |
접미사는 접두사보다 어근에 더 강하게 결합하므로, 접두사를 먼저 펼친 뒤 접미사를 마지막에 펼칩니다. 예를 들어 단어 unvaporize는 다음 단계로 펼쳐집니다.
unvaporize
not vaporize
not change into vapor
이렇게 얻은 정의가 문법적으로 완벽하지는 않지만, 숙제 점수 하나를 받기에는 충분합니다.
첫째 줄에 정의할 단어의 개수인 정수 $n$이 주어집니다. 이어지는 $n$개의 줄에 각각 단어 하나가 주어집니다.
각 단어에 대해 접두사와 접미사를 각각 최대 하나씩 펼칩니다. 모든 단어는 접두사와 접미사를 제거한 뒤에도 비어 있지 않은 어근이 남는 것이 보장됩니다. 각 단어는 출력 가능한 문자 100개 이하로 이루어져 있습니다.
각 단어에 대해, 인식한 접두사와 접미사를 그 뜻으로 바꾼 펼친 형태를 한 줄에 하나씩 출력합니다. 인식되는 접두사와 접미사가 모두 없는 단어는 그대로 출력합니다.