Added Trie instead of QSet<QString>

for better performance, it reduces the complexity from m log(n) to just
m