Hello, I have performed the modifications required in order to use std::reverse_iterator instead of trie_iterator. [0]. Also, I have optimized the get_key function [1]. The overall diff can be found here [2]. Please give me some feedback about the code when you have time. Also, it seems to be a problem with trie_iterator::operator->. It doesn't work and I think it may cause memory corruption. I think the problem is that it returns &(operator *()) which is a value allocated on stack that gets destroyed when it goes out of scope. However, I don't know how it should be implemented. Please tell me what do you think about this operator. As a workaround, instead of using this operator I have used operator * and the code passes the tests. Thank you, Cosmin