diff --git a/alib2algo/src/stringology/indexing/SuffixTrieNaive.h b/alib2algo/src/stringology/indexing/SuffixTrieNaive.h
index 557cf3df44aaf3e37dc569c47c6bec14b6440f09..fe2e6ffaae8a0dcf2ef0cf425297edcd40bd4da6 100644
--- a/alib2algo/src/stringology/indexing/SuffixTrieNaive.h
+++ b/alib2algo/src/stringology/indexing/SuffixTrieNaive.h
@@ -39,11 +39,11 @@ public:
 
 template < class SymbolType >
 indexes::SuffixTrie < SymbolType, unsigned > SuffixTrieNaive::construct ( const string::LinearString < SymbolType > & w ) {
-	std::trie < SymbolType, std::variant < void, unsigned > > trie ( std::variant < void, unsigned >::from < void > ( ) );
-	std::set < unsigned > nodeAlphabet;
+	std::trie < SymbolType, std::variant < void, unsigned > > trie ( std::variant < void, unsigned > ( ( unsigned ) w.getContent ( ).size ( ) ) );
+	std::set < unsigned > nodeAlphabet = { ( unsigned ) w.getContent ( ).size ( ) };
 
-	for ( unsigned i = 0; i < w.getContent ( ).size ( ); i++ ) {
-		unsigned k = i;
+	for ( unsigned i = w.getContent ( ).size ( ); i > 0; i-- ) {
+		unsigned k = i - 1;
 		std::trie < SymbolType, std::variant < void, unsigned > > * n = & trie;
 
 		 // inlined slow_find_one from MI-EVY lectures
@@ -51,11 +51,11 @@ indexes::SuffixTrie < SymbolType, unsigned > SuffixTrieNaive::construct ( const
 			n = & n->getChildren ( ).find ( w.getContent ( )[k++] )->second;
 
 		for ( ; k < w.getContent ( ).size ( ); k++ ) {
-			std::variant < void, unsigned > node = k + 1 < w.getContent ( ).size ( ) ? std::variant < void, unsigned >::from < void > ( ) : std::variant < void, unsigned > ( i );
+			std::variant < void, unsigned > node = k + 1 < w.getContent ( ).size ( ) ? std::variant < void, unsigned >::from < void > ( ) : std::variant < void, unsigned > ( i - 1 );
 			n = & n->getChildren ( ).insert ( std::make_pair ( w.getContent ( )[k], std::trie < SymbolType, std::variant < void, unsigned > > ( node ) ) ).first->second;
 		}
 
-		nodeAlphabet.insert ( i );
+		nodeAlphabet.insert ( i - 1 );
 	}
 
 	return indexes::SuffixTrie < SymbolType, unsigned > ( w.getAlphabet ( ), nodeAlphabet, trie );