#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);
}
bool sw = false;
size_t pos = 0;
for (int i = 0; i < N; i++) {
pos = 0;
if (EncloseWithBrackets(ShortCut, Options[i], 0)) {
continue;
}
while ((pos = Options[i].find(" ", pos)) != string::npos) {
pos += 1;
if (sw = EncloseWithBrackets(ShortCut, Options[i], pos)) {
break;
}
}
if (sw) {
sw = false;
continue;
}
pos = 1;
while (pos < Options[i].size()) {
if (EncloseWithBrackets(ShortCut, Options[i], pos)) {
break;
}
pos += 1;
}
}
for (int i = 0; i < N; i++) {
cout << Options[i] << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKYm9vbCBFbmNsb3NlV2l0aEJyYWNrZXRzKHN0cmluZyYgUmVmZXJlbmNlU3RyLCBzdHJpbmcmIFRhcmdldFN0ciwgc2l6ZV90IHBvcykgewoJaWYgKCFjb3VudChSZWZlcmVuY2VTdHIuYmVnaW4oKSwgUmVmZXJlbmNlU3RyLmVuZCgpLCBUYXJnZXRTdHJbcG9zXSkpIHsKCQlpZiAoJ0EnIDw9IFRhcmdldFN0cltwb3NdICYmIFRhcmdldFN0cltwb3NdIDw9ICdaJykgewoJCQlSZWZlcmVuY2VTdHIgKz0gVGFyZ2V0U3RyW3Bvc107CgkJCVJlZmVyZW5jZVN0ciArPSAoVGFyZ2V0U3RyW3Bvc10gKyAzMik7CgkJfQoJCWlmICgnYScgPD0gVGFyZ2V0U3RyW3Bvc10gJiYgVGFyZ2V0U3RyW3Bvc10gPD0gJ3onKSB7CgkJCVJlZmVyZW5jZVN0ciArPSBUYXJnZXRTdHJbcG9zXTsKCQkJUmVmZXJlbmNlU3RyICs9IChUYXJnZXRTdHJbcG9zXSAtIDMyKTsKCQl9CiAgICAJVGFyZ2V0U3RyLmluc2VydChwb3MsICJbIik7CiAgICAJVGFyZ2V0U3RyLmluc2VydChwb3MgKyAyLCAiXSIpOwogICAgCXJldHVybiB0cnVlOwoJfQoJcmV0dXJuIGZhbHNlOwp9CiAKIAppbnQgbWFpbigpIHsKCWludCBOID0gMDsKCXZlY3RvcjxzdHJpbmc+IE9wdGlvbnM7CglzdHJpbmcgU2hvcnRDdXQ7CiAKICAgIGNpbiA+PiBOOwogCiAgICBjaW4uaWdub3JlKCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIHN0cmluZyBpbnB1dDsKICAgICAgICBnZXRsaW5lKGNpbiwgaW5wdXQpOwogICAgICAgIE9wdGlvbnMucHVzaF9iYWNrKGlucHV0KTsKICAgIH0KIAogICAgYm9vbCBzdyA9IGZhbHNlOwogICAgc2l6ZV90IHBvcyA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgCXBvcyA9IDA7CiAgICAgICAgaWYgKEVuY2xvc2VXaXRoQnJhY2tldHMoU2hvcnRDdXQsIE9wdGlvbnNbaV0sIDApKSB7CiAgICAJCWNvbnRpbnVlOwogICAgCX0KICAgIAl3aGlsZSAoKHBvcyA9IE9wdGlvbnNbaV0uZmluZCgiICIsIHBvcykpICE9IHN0cmluZzo6bnBvcykgewogICAgCQlwb3MgKz0gMTsKICAgIAkJaWYgKHN3ID0gRW5jbG9zZVdpdGhCcmFja2V0cyhTaG9ydEN1dCwgT3B0aW9uc1tpXSwgcG9zKSkgewogICAgCQkJYnJlYWs7CiAgICAJCX0KICAgIAl9CiAgICAJaWYgKHN3KSB7CiAgICAJCXN3ID0gZmFsc2U7CiAgICAJCWNvbnRpbnVlOwogICAgCX0KICAgIAlwb3MgPSAxOwogICAgICAgIHdoaWxlIChwb3MgPCBPcHRpb25zW2ldLnNpemUoKSkgewogICAgCQlpZiAoRW5jbG9zZVdpdGhCcmFja2V0cyhTaG9ydEN1dCwgT3B0aW9uc1tpXSwgcG9zKSkgewogICAgCQkJYnJlYWs7CiAgICAJCX0KICAgIAkJcG9zICs9IDE7CiAgICAJfQogICAgfQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgIAljb3V0IDw8IE9wdGlvbnNbaV0gPDwgZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9