#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])) {
ReferenceStr += TargetStr[pos];
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgRW5jbG9zZVdpdGhCcmFja2V0cyhzdHJpbmcmIFJlZmVyZW5jZVN0ciwgc3RyaW5nJiBUYXJnZXRTdHIsIHNpemVfdCBwb3MpIHsKCWlmICghY291bnQoUmVmZXJlbmNlU3RyLmJlZ2luKCksIFJlZmVyZW5jZVN0ci5lbmQoKSwgVGFyZ2V0U3RyW3Bvc10pKSB7CiAgICAJUmVmZXJlbmNlU3RyICs9IFRhcmdldFN0cltwb3NdOwogICAgCVRhcmdldFN0ci5pbnNlcnQocG9zLCAiWyIpOwogICAgCVRhcmdldFN0ci5pbnNlcnQocG9zICsgMiwgIl0iKTsKICAgIAlyZXR1cm4gdHJ1ZTsKCX0KCXJldHVybiBmYWxzZTsKfQoKCmludCBtYWluKCkgewoJaW50IE4gPSAwOwoJdmVjdG9yPHN0cmluZz4gT3B0aW9uczsKCXN0cmluZyBTaG9ydEN1dDsKCiAgICBjaW4gPj4gTjsKCiAgICBjaW4uaWdub3JlKCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIHN0cmluZyBpbnB1dDsKICAgICAgICBnZXRsaW5lKGNpbiwgaW5wdXQpOwogICAgICAgIE9wdGlvbnMucHVzaF9iYWNrKGlucHV0KTsKICAgIH0KICAgIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgIAljb3V0IDw8IE9wdGlvbnNbaV0gPDwgZW5kbDsKICAgIH0KICAgIAogICAgYm9vbCBzdyA9IGZhbHNlOwogICAgc2l6ZV90IHBvcyA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgCWlmIChFbmNsb3NlV2l0aEJyYWNrZXRzKFNob3J0Q3V0LCBPcHRpb25zW2ldLCAwKSkgewogICAgCQljb3V0IDw8IE9wdGlvbnNbaV0gPDwgZW5kbDsKICAgIAkJY29udGludWU7CiAgICAJfQogICAgCXdoaWxlICgocG9zID0gT3B0aW9uc1tpXS5maW5kKCIgIiwgcG9zKSkgIT0gc3RyaW5nOjpucG9zKSB7CiAgICAJCXBvcyArPSAxOwogICAgCQlpZiAoc3cgPSBFbmNsb3NlV2l0aEJyYWNrZXRzKFNob3J0Q3V0LCBPcHRpb25zW2ldLCBwb3MpKSB7CiAgICAJCQlicmVhazsKICAgIAkJfQogICAgCX0KICAgIAlpZiAoc3cpIHsKICAgIAkJc3cgPSBmYWxzZTsKICAgIAkJY291dCA8PCBPcHRpb25zW2ldIDw8IGVuZGw7CiAgICAJCWNvbnRpbnVlOwogICAgCX0KICAgIAlwb3MgPSAwOwogICAgCXdoaWxlIChPcHRpb25zW2ldW3Bvc10gIT0gJ1wwJykgewogICAgCQlwb3MgKz0gMTsKICAgIAkJaWYgKEVuY2xvc2VXaXRoQnJhY2tldHMoU2hvcnRDdXQsIE9wdGlvbnNbaV0sIHBvcykpIHsKICAgIAkJCWJyZWFrOwogICAgCQl9CiAgICAJfQogICAgCWNvdXQgPDwgT3B0aW9uc1tpXSA8PCBlbmRsOwogICAgfQogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgCWNvdXQgPDwgT3B0aW9uc1tpXSA8PCBlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0=