#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 << ' ';
        }
    }
}