#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
const vector<string> foo = { "Why"s, "do"s, "do"s, "we"s, "we"s, "here"s, "here?"s };
for(auto it = cbegin(foo); it != cend(foo); ++it) {
if(none_of(next(it), cend(foo), [&](const auto& i) {
const auto finish = mismatch(cbegin(*it), cend(*it), cbegin(i), cend(i));
return (finish.first == cend(*it) || !isalnum(*finish.first)) && (finish.second == cend(i) || !isalnum(*finish.second));
})) {
cout << *it << ' ';
}
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNjdHlwZT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJY29uc3QgdmVjdG9yPHN0cmluZz4gZm9vID0geyAiV2h5InMsICJkbyJzLCAiZG8icywgIndlInMsICJ3ZSJzLCAiaGVyZSJzLCAiaGVyZT8icyB9OwoJCiAgICBmb3IoYXV0byBpdCA9IGNiZWdpbihmb28pOyBpdCAhPSBjZW5kKGZvbyk7ICsraXQpIHsKICAgICAgICBpZihub25lX29mKG5leHQoaXQpLCBjZW5kKGZvbyksIFsmXShjb25zdCBhdXRvJiBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGZpbmlzaCA9IG1pc21hdGNoKGNiZWdpbigqaXQpLCBjZW5kKCppdCksIGNiZWdpbihpKSwgY2VuZChpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGZpbmlzaC5maXJzdCA9PSBjZW5kKCppdCkgfHwgIWlzYWxudW0oKmZpbmlzaC5maXJzdCkpICYmIChmaW5pc2guc2Vjb25kID09IGNlbmQoaSkgfHwgIWlzYWxudW0oKmZpbmlzaC5zZWNvbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIHsKICAgICAgICAgICAgY291dCA8PCAqaXQgPDwgJyAnOwogICAgICAgIH0KICAgIH0KfQ==