#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool EncloseWithBrackets(string& ReferenceStr, string& TargetStr, size_t pos) {
if (!count(ReferenceStr.begin(), ReferenceStr.end(), TargetStr[pos])) {
if ('A' <= TargetStr[pos] && TargetStr[pos] <= 'Z') {
ReferenceStr += TargetStr[pos];
ReferenceStr += (TargetStr[pos] + 32);
}
if ('a' <= TargetStr[pos] && TargetStr[pos] <= 'z') {
ReferenceStr += TargetStr[pos];
ReferenceStr += (TargetStr[pos] - 32);
}
TargetStr.insert(pos, "[");
TargetStr.insert(pos + 2, "]");
return true;
}
return false;
}
int main() {
int N = 0;
vector<string> Options;
string ShortCut;
cin >> N;
cin.ignore();
for (int i = 0; i < N; i++) {
string input;
getline(cin, input);
Options.push_back(input);
}
for (int i = 0; i < N; i++) {
cout << Options[i] << endl;
}
bool sw = false;
size_t pos = 0;
for (int i = 0; i < N; i++) {
if (EncloseWithBrackets(ShortCut, Options[i], 0)) {
cout << Options[i] << endl;
continue;
}
while ((pos = Options[i].find(" ", pos)) != string::npos) {
pos += 1;
if (sw = EncloseWithBrackets(ShortCut, Options[i], pos)) {
break;
}
}
if (sw) {
sw = false;
cout << Options[i] << endl;
continue;
}
pos = 0;
while (Options[i][pos] != '\0') {
pos += 1;
if (EncloseWithBrackets(ShortCut, Options[i], pos)) {
break;
}
}
cout << Options[i] << endl;
}
for (int i = 0; i < N; i++) {
cout << Options[i] << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKYm9vbCBFbmNsb3NlV2l0aEJyYWNrZXRzKHN0cmluZyYgUmVmZXJlbmNlU3RyLCBzdHJpbmcmIFRhcmdldFN0ciwgc2l6ZV90IHBvcykgewoJaWYgKCFjb3VudChSZWZlcmVuY2VTdHIuYmVnaW4oKSwgUmVmZXJlbmNlU3RyLmVuZCgpLCBUYXJnZXRTdHJbcG9zXSkpIHsKCQlpZiAoJ0EnIDw9IFRhcmdldFN0cltwb3NdICYmIFRhcmdldFN0cltwb3NdIDw9ICdaJykgewoJCQlSZWZlcmVuY2VTdHIgKz0gVGFyZ2V0U3RyW3Bvc107CgkJCVJlZmVyZW5jZVN0ciArPSAoVGFyZ2V0U3RyW3Bvc10gKyAzMik7CgkJfQoJCWlmICgnYScgPD0gVGFyZ2V0U3RyW3Bvc10gJiYgVGFyZ2V0U3RyW3Bvc10gPD0gJ3onKSB7CgkJCVJlZmVyZW5jZVN0ciArPSBUYXJnZXRTdHJbcG9zXTsKCQkJUmVmZXJlbmNlU3RyICs9IChUYXJnZXRTdHJbcG9zXSAtIDMyKTsKCQl9CiAgICAJVGFyZ2V0U3RyLmluc2VydChwb3MsICJbIik7CiAgICAJVGFyZ2V0U3RyLmluc2VydChwb3MgKyAyLCAiXSIpOwogICAgCXJldHVybiB0cnVlOwoJfQoJcmV0dXJuIGZhbHNlOwp9CiAKIAppbnQgbWFpbigpIHsKCWludCBOID0gMDsKCXZlY3RvcjxzdHJpbmc+IE9wdGlvbnM7CglzdHJpbmcgU2hvcnRDdXQ7CiAKICAgIGNpbiA+PiBOOwogCiAgICBjaW4uaWdub3JlKCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIHN0cmluZyBpbnB1dDsKICAgICAgICBnZXRsaW5lKGNpbiwgaW5wdXQpOwogICAgICAgIE9wdGlvbnMucHVzaF9iYWNrKGlucHV0KTsKICAgIH0KIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgIAljb3V0IDw8IE9wdGlvbnNbaV0gPDwgZW5kbDsKICAgIH0KIAogICAgYm9vbCBzdyA9IGZhbHNlOwogICAgc2l6ZV90IHBvcyA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgCWlmIChFbmNsb3NlV2l0aEJyYWNrZXRzKFNob3J0Q3V0LCBPcHRpb25zW2ldLCAwKSkgewogICAgCQljb3V0IDw8IE9wdGlvbnNbaV0gPDwgZW5kbDsKICAgIAkJY29udGludWU7CiAgICAJfQogICAgCXdoaWxlICgocG9zID0gT3B0aW9uc1tpXS5maW5kKCIgIiwgcG9zKSkgIT0gc3RyaW5nOjpucG9zKSB7CiAgICAJCXBvcyArPSAxOwogICAgCQlpZiAoc3cgPSBFbmNsb3NlV2l0aEJyYWNrZXRzKFNob3J0Q3V0LCBPcHRpb25zW2ldLCBwb3MpKSB7CiAgICAJCQlicmVhazsKICAgIAkJfQogICAgCX0KICAgIAlpZiAoc3cpIHsKICAgIAkJc3cgPSBmYWxzZTsKICAgIAkJY291dCA8PCBPcHRpb25zW2ldIDw8IGVuZGw7CiAgICAJCWNvbnRpbnVlOwogICAgCX0KICAgIAlwb3MgPSAwOwogICAgCXdoaWxlIChPcHRpb25zW2ldW3Bvc10gIT0gJ1wwJykgewogICAgCQlwb3MgKz0gMTsKICAgIAkJaWYgKEVuY2xvc2VXaXRoQnJhY2tldHMoU2hvcnRDdXQsIE9wdGlvbnNbaV0sIHBvcykpIHsKICAgIAkJCWJyZWFrOwogICAgCQl9CiAgICAJfQogICAgCWNvdXQgPDwgT3B0aW9uc1tpXSA8PCBlbmRsOwogICAgfQogCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgCWNvdXQgPDwgT3B0aW9uc1tpXSA8PCBlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0=