diff --git a/alib2algo/src/stringology/simulations/ExactBitParalelism.h b/alib2algo/src/stringology/simulations/ExactBitParalelism.h
index f57c4def54cd014e659f532476a381b935f2ff3b..e68064799f50212dafba427b90d584b2139378a5 100644
--- a/alib2algo/src/stringology/simulations/ExactBitParalelism.h
+++ b/alib2algo/src/stringology/simulations/ExactBitParalelism.h
@@ -20,12 +20,12 @@ namespace simulations {
 class ExactBitParalelism {
 public:
     template <class SymbolType>
-    static ext::vector<unsigned int> search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern);
+    static ext::set<unsigned int> search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern);
 };
 
 
 template <class SymbolType>
-ext::vector<unsigned int> ExactBitParalelism::search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern) {
+ext::set<unsigned int> ExactBitParalelism::search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern) {
 
   // preparation stage
   ext::set<SymbolType> common_alphabet = text.getAlphabet();
@@ -34,7 +34,7 @@ ext::vector<unsigned int> ExactBitParalelism::search(const string::LinearString<
   ext::map<SymbolType, ext::vector<bool> > D_vectors = BitParalelism::constructDVectors(common_alphabet, pattern);
 
   // computation part
-  ext::vector<unsigned int> result;
+  ext::set<unsigned int> result;
 
   auto B_vector = ext::vector<bool>(pattern.getContent().size(), 1);
 
@@ -42,7 +42,7 @@ ext::vector<unsigned int> ExactBitParalelism::search(const string::LinearString<
     B_vector = (B_vector << 1) | D_vectors[text.getContent()[i]];
 
     if (B_vector[pattern.getContent().size() - 1] == false) {
-        result.push_back(i - pattern.getContent().size() + 1);
+        result.insert(i - pattern.getContent().size() + 1);
     }
   }
 
diff --git a/alib2algo/src/stringology/simulations/GeneralizedLevenshteinBitParalelism.h b/alib2algo/src/stringology/simulations/GeneralizedLevenshteinBitParalelism.h
index 1de343501237a87f0919b419ee44e5e1e8db828c..cefdc6811141d6bcca92c8bf934cb0b499a08a4b 100644
--- a/alib2algo/src/stringology/simulations/GeneralizedLevenshteinBitParalelism.h
+++ b/alib2algo/src/stringology/simulations/GeneralizedLevenshteinBitParalelism.h
@@ -20,11 +20,11 @@ namespace simulations {
 class GeneralizedLevenshteinBitParalelism {
 public:
     template <class SymbolType>
-    static ext::vector<unsigned int> search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors);
+    static ext::set<unsigned int> search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors);
 };
 
 template <class SymbolType>
-ext::vector<unsigned int> GeneralizedLevenshteinBitParalelism::search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors) {
+ext::set<unsigned int> GeneralizedLevenshteinBitParalelism::search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors) {
   // preparation stage
   ext::set<SymbolType> common_alphabet = text.getAlphabet();
   common_alphabet.insert(pattern.getAlphabet().begin(), pattern.getAlphabet().end());
@@ -35,7 +35,7 @@ ext::vector<unsigned int> GeneralizedLevenshteinBitParalelism::search(const stri
   V_vector[pattern.getContent().size() - 1] = 1;
 
   // computation part
-  ext::vector<unsigned int> result;
+  ext::set<unsigned int> result;
 
   ext::vector<ext::vector<bool> > B_vectors;
   for(unsigned int i=0; i<=errors; i++) {
@@ -72,7 +72,7 @@ ext::vector<unsigned int> GeneralizedLevenshteinBitParalelism::search(const stri
 
     for (const auto & data : B_vectors) {
       if(data[pattern.getContent().size()-1] == false) {
-        result.push_back(i);
+        result.insert(i);
         break;
       }
     }
diff --git a/alib2algo/src/stringology/simulations/HammingBitParalelism.h b/alib2algo/src/stringology/simulations/HammingBitParalelism.h
index b6716bc8789357c8fa241589a8ded27bc56a5e0f..4cc35489d18c1f342c53a6a39976b2e65a668f91 100644
--- a/alib2algo/src/stringology/simulations/HammingBitParalelism.h
+++ b/alib2algo/src/stringology/simulations/HammingBitParalelism.h
@@ -20,12 +20,12 @@ namespace simulations {
 class HammingBitParalelism {
 public:
     template <class SymbolType>
-    static ext::vector<unsigned int> search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors);
+    static ext::set<unsigned int> search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors);
 };
 
 
 template <class SymbolType>
-ext::vector<unsigned int> HammingBitParalelism::search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors) {
+ext::set<unsigned int> HammingBitParalelism::search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors) {
   // preparation stage
   ext::set<SymbolType> common_alphabet = text.getAlphabet();
   common_alphabet.insert(pattern.getAlphabet().begin(), pattern.getAlphabet().end());
@@ -33,7 +33,7 @@ ext::vector<unsigned int> HammingBitParalelism::search(const string::LinearStrin
   ext::map<SymbolType, ext::vector<bool> > D_vectors = BitParalelism::constructDVectors(common_alphabet, pattern);
 
   // computation part
-  ext::vector<unsigned int> result;
+  ext::set<unsigned int> result;
 
   ext::vector<ext::vector<bool> > B_vectors;
   for(unsigned int i=0; i<=errors; i++) {
@@ -51,7 +51,7 @@ ext::vector<unsigned int> HammingBitParalelism::search(const string::LinearStrin
 
     for(const auto & B_vector : B_vectors) {
       if (B_vector[pattern.getContent().size()-1] == false) {
-        result.push_back(i - pattern.getContent().size() + 1);
+        result.insert(i - pattern.getContent().size() + 1);
         break;
       }
     }
diff --git a/alib2algo/src/stringology/simulations/LevenshteinBitParalelism.h b/alib2algo/src/stringology/simulations/LevenshteinBitParalelism.h
index e42990ee9903280c4645616a0bbdcff980bdc635..e4bb906af0c998756908261a974e5521cae68b12 100644
--- a/alib2algo/src/stringology/simulations/LevenshteinBitParalelism.h
+++ b/alib2algo/src/stringology/simulations/LevenshteinBitParalelism.h
@@ -20,12 +20,12 @@ namespace simulations {
 class LevenshteinBitParalelism {
 public:
     template <class SymbolType>
-    static ext::vector<unsigned int> search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors);
+    static ext::set<unsigned int> search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors);
 };
 
 
 template <class SymbolType>
-ext::vector<unsigned int> LevenshteinBitParalelism::search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors) {
+ext::set<unsigned int> LevenshteinBitParalelism::search(const string::LinearString<SymbolType> & text, const string::LinearString<SymbolType> & pattern, unsigned int errors) {
   // preparation stage
   ext::set<SymbolType> common_alphabet = text.getAlphabet();
   common_alphabet.insert(pattern.getAlphabet().begin(), pattern.getAlphabet().end());
@@ -36,7 +36,7 @@ ext::vector<unsigned int> LevenshteinBitParalelism::search(const string::LinearS
   V_vector[pattern.getContent().size() - 1] = 1;
 
   // computation part
-  ext::vector<unsigned int> result;
+  ext::set<unsigned int> result;
 
   ext::vector<ext::vector<bool> > B_vectors;
   for(unsigned int i=0; i<=errors; i++) {
@@ -62,7 +62,7 @@ ext::vector<unsigned int> LevenshteinBitParalelism::search(const string::LinearS
 
     for (const auto & data : B_vectors) {
       if(data[pattern.getContent().size()-1] == false) {
-        result.push_back(i);
+        result.insert(i);
         break;
       }
     }
diff --git a/alib2algo/test-src/stringology/simulations/ExactBitParalelismTest.cpp b/alib2algo/test-src/stringology/simulations/ExactBitParalelismTest.cpp
index d0268f8de5f6bdfd9fe6e578521334c1420b852b..4955dc08de9cccad6b081f5074cb4b8d04035ab4 100644
--- a/alib2algo/test-src/stringology/simulations/ExactBitParalelismTest.cpp
+++ b/alib2algo/test-src/stringology/simulations/ExactBitParalelismTest.cpp
@@ -10,7 +10,7 @@ void ExactBitParalelismTest::testSimple() {
   auto text = string::LinearString<>("adcabcaabadbbca");
   auto pattern = string::LinearString<>("adbbca");
 
-  ext::vector<unsigned int> expected_result = {9};
+  ext::set<unsigned int> expected_result = {9};
 
   CPPUNIT_ASSERT(expected_result == stringology::simulations::ExactBitParalelism::search(text, pattern));
 }
diff --git a/alib2algo/test-src/stringology/simulations/GeneralizedLevenshteinBitParalelismTest.cpp b/alib2algo/test-src/stringology/simulations/GeneralizedLevenshteinBitParalelismTest.cpp
index dde416d9eb54659072c9ebf5a3b1adec92929124..025426902bf9408d46b6e01b53678c5c38c00a6a 100644
--- a/alib2algo/test-src/stringology/simulations/GeneralizedLevenshteinBitParalelismTest.cpp
+++ b/alib2algo/test-src/stringology/simulations/GeneralizedLevenshteinBitParalelismTest.cpp
@@ -10,7 +10,7 @@ void GeneralizedLevenshteinBitParalelismTest::testSimple() {
   auto text = string::LinearString<>("adbcbaabadbbca");
   auto pattern = string::LinearString<>("adbbca");
 
-  ext::vector<unsigned int> expected_result = {2, 3, 4, 5, 6, 8, 10, 11, 12, 13};
+  ext::set<unsigned int> expected_result = {2, 3, 4, 5, 6, 8, 10, 11, 12, 13};
   auto result = stringology::simulations::GeneralizedLevenshteinBitParalelism::search(text, pattern, 3);
   CPPUNIT_ASSERT(expected_result == result);
 }
diff --git a/alib2algo/test-src/stringology/simulations/HammingBitParalelismTest.cpp b/alib2algo/test-src/stringology/simulations/HammingBitParalelismTest.cpp
index 139b9fdebf5ce7ed71ce5763cd1db28cf8e62b91..cc4e02fe034b0b997e822f7d4c832552bfcb0df0 100644
--- a/alib2algo/test-src/stringology/simulations/HammingBitParalelismTest.cpp
+++ b/alib2algo/test-src/stringology/simulations/HammingBitParalelismTest.cpp
@@ -10,7 +10,7 @@ void HammingBitParalelismTest::testSimple() {
   auto text = string::LinearString<>("adcabcaabadbbca");
   auto pattern = string::LinearString<>("adbbca");
 
-  ext::vector<unsigned int> expected_result = {1,9};
+  ext::set<unsigned int> expected_result = {1,9};
   auto result = stringology::simulations::HammingBitParalelism::search(text, pattern, 3);
   CPPUNIT_ASSERT(expected_result == result);
 }
diff --git a/alib2algo/test-src/stringology/simulations/HammingDynamicProgrammingTest.cpp b/alib2algo/test-src/stringology/simulations/HammingDynamicProgrammingTest.cpp
index 2039f8ec2f0035804eec0ffd963ebfd3fe7946f4..8f3a7d978359b16f4af289920352f32996fae08c 100644
--- a/alib2algo/test-src/stringology/simulations/HammingDynamicProgrammingTest.cpp
+++ b/alib2algo/test-src/stringology/simulations/HammingDynamicProgrammingTest.cpp
@@ -36,7 +36,7 @@ void HammingDynamicProgrammingTest::testSearching() {
   auto text = string::LinearString<>("patternpettannbalastpettern");
   auto pattern = string::LinearString<>("pattern");
 
-  auto expected_result = ext::vector<unsigned int>({0, 7, 20});
+  auto expected_result = ext::set<unsigned int>({0, 7, 20});
   auto result = stringology::simulations::HammingDynamicProgramming::search(text, pattern, 3);
 
   CPPUNIT_ASSERT(expected_result == result);
diff --git a/alib2algo/test-src/stringology/simulations/LevenshteinBitParalelismTest.cpp b/alib2algo/test-src/stringology/simulations/LevenshteinBitParalelismTest.cpp
index 1284848c8f734fcf63a8e4da2cad655b2b6d3147..829693252fd37fc4c14356cc9ba9ae7dde06301b 100644
--- a/alib2algo/test-src/stringology/simulations/LevenshteinBitParalelismTest.cpp
+++ b/alib2algo/test-src/stringology/simulations/LevenshteinBitParalelismTest.cpp
@@ -10,7 +10,7 @@ void LevenshteinBitParalelismTest::testSimple() {
   auto text = string::LinearString<>("adcabcaabadbbca");
   auto pattern = string::LinearString<>("adbbca");
 
-  ext::vector<unsigned int> expected_result = {2, 3, 5, 6, 7, 9, 11, 12, 13, 14};
+  ext::set<unsigned int> expected_result = {2, 3, 5, 6, 7, 9, 11, 12, 13, 14};
   auto result = stringology::simulations::LevenshteinBitParalelism::search(text, pattern, 3);
   CPPUNIT_ASSERT(expected_result == result);
 }