diff --git a/reading_machine/src/Strategy.cpp b/reading_machine/src/Strategy.cpp
index 769420b74b2ec107de14aff819e92ce564900815..b54097591827dec9e597d86743d957935dab4018 100644
--- a/reading_machine/src/Strategy.cpp
+++ b/reading_machine/src/Strategy.cpp
@@ -39,6 +39,8 @@ Strategy::Strategy(const std::vector<std::string_view> & lines)
 
   if (edges.empty())
     util::myThrow("Strategy is empty");
+  if (type == Type::Sequential)
+    defaultCycle.pop_back();
   std::reverse(defaultCycle.begin(), defaultCycle.end());
   originalDefaultCycle = defaultCycle;
 }
@@ -50,18 +52,21 @@ std::pair<std::string, int> Strategy::getMovement(const Config & c, const std::s
   if (c.stateIsDone())
     isDone[c.getState()] = true;
 
-  for (unsigned int i = 0; i < defaultCycle.size(); i++)
+  if (type == Type::Sequential)
   {
+    while (defaultCycle.size() && isDone[defaultCycle.back()])
+      defaultCycle.pop_back();
+
+    return getMovementSequential(c, transitionPrefix);
+  }
+
+  for (unsigned int i = 0; i < defaultCycle.size(); i++)
     if (isDone[defaultCycle[i]])
     {
       while (defaultCycle.size() != i)
         defaultCycle.pop_back();
       break;
     }
-  }
-
-  if (type == Type::Sequential)
-    return getMovementSequential(c, transitionPrefix);
 
   return getMovementIncremental(c, transitionPrefix);
 }