diff --git a/alib2algo/src/stringology/simulations/LevenshteinDynamicProgramming.h b/alib2algo/src/stringology/simulations/LevenshteinDynamicProgramming.h
index 3c021375369d5430527ea0ca59cf9860ea4f0f5b..54a881e4c1e502a29e8fc4d377b7bc43da206e7e 100644
--- a/alib2algo/src/stringology/simulations/LevenshteinDynamicProgramming.h
+++ b/alib2algo/src/stringology/simulations/LevenshteinDynamicProgramming.h
@@ -9,6 +9,7 @@
 #define _LEVENSHTEIN_DYNAMIC_PROGRAMMING_H__
 
 #include <algorithm>
+#include <limits.h>
 
 #include <string/LinearString.h>
 
@@ -46,13 +47,14 @@ ext::vector<ext::vector<unsigned int>> LevenshteinDynamicProgramming::compute_ta
         value_a = table[j-1][i-1] + 1;
       }
 
-      unsigned int value_b;
+      unsigned int value_b = UINT_MAX;
       if(j < pattern.getContent().size()) {
         value_b = table[j][i-1] + 1;
-      } else {
-        value_b = table[j-1][i] + 1;
       }
 
+      value_b = std::min(table[j-1][i] + 1, value_b);
+
+
       table[j][i] = std::min({value_a, value_b});
     }
   }
diff --git a/alib2algo/test-src/stringology/simulations/LevenshteinDynamicProgrammingTest.cpp b/alib2algo/test-src/stringology/simulations/LevenshteinDynamicProgrammingTest.cpp
index 804fa8f36577a657f73b7d3bfb91df7554519150..a87f8f14cc88e6f6fbea43791ac9a859a1fd45aa 100644
--- a/alib2algo/test-src/stringology/simulations/LevenshteinDynamicProgrammingTest.cpp
+++ b/alib2algo/test-src/stringology/simulations/LevenshteinDynamicProgrammingTest.cpp
@@ -11,23 +11,13 @@ void LevenshteinDynamicProgrammingTest::testTableConstruction() {
   auto pattern = string::LinearString<>("adbbca");
 
   ext::vector<ext::vector<unsigned int>> expected_result = {
-    ext::vector<unsigned int>({0, 1, 2, 3, 4, 5, 6}),
-    ext::vector<unsigned int>({0, 0, 1, 2, 3, 4, 5}),
-    ext::vector<unsigned int>({0, 1, 0, 1, 2, 3, 4}),
-    ext::vector<unsigned int>({0, 1, 1, 1, 2, 2, 3}),
-    ext::vector<unsigned int>({0, 0, 1, 2, 2, 3, 2}),
-    ext::vector<unsigned int>({0, 1, 1, 1, 2, 3, 4}),
-    ext::vector<unsigned int>({0, 1, 2, 2, 2, 2, 3}),
-    ext::vector<unsigned int>({0, 0, 1, 2, 3, 3, 2}),
-    ext::vector<unsigned int>({0, 0, 1, 2, 3, 4, 3}),
-    ext::vector<unsigned int>({0, 1, 1, 1, 2, 3, 4}),
-    ext::vector<unsigned int>({0, 0, 1, 2, 2, 3, 3}),
-    ext::vector<unsigned int>({0, 1, 0, 1, 2, 3, 4}),
-    ext::vector<unsigned int>({0, 1, 1, 0, 1, 2, 3}),
-    ext::vector<unsigned int>({0, 1, 2, 1, 0, 1, 2}),
-    ext::vector<unsigned int>({0, 1, 2, 2, 1, 0, 1}),
-    ext::vector<unsigned int>({0, 0, 1, 2, 2, 1, 0}),
-
+    ext::vector<unsigned int>({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
+    ext::vector<unsigned int>({1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0}),
+    ext::vector<unsigned int>({2, 1, 0, 1, 1, 1, 2, 1, 1, 1, 1, 0, 1, 2, 2, 1}),
+    ext::vector<unsigned int>({3, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1, 0, 1, 2, 2}),
+    ext::vector<unsigned int>({4, 3, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 1, 0, 1, 2}),
+    ext::vector<unsigned int>({5, 4, 3, 2, 3, 3, 2, 3, 4, 3, 3, 3, 2, 1, 0, 1}),
+    ext::vector<unsigned int>({6, 5, 4, 3, 2, 4, 3, 2, 3, 4, 3, 4, 3, 2, 1, 0}),
   };
 
   CPPUNIT_ASSERT(expected_result == stringology::simulations::LevenshteinDynamicProgramming::compute_table(text, pattern));