diff --git a/android/gradle.properties b/android/gradle.properties
index d9abd55731010fe508f39321892e8002f10e79ef..663881258a10822c0b4abc064b6e0bc0ccf48833 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=0.0.12
-app.versionCode=12
+app.versionName=0.0.13
+app.versionCode=13
diff --git a/lib/layout/game.dart b/lib/layout/game.dart
index 558cde459b9ca233beabfdff4c0fd632bf9e34b1..1fd8e22ca39fc2624d60e5e7b31dee5813924fb6 100644
--- a/lib/layout/game.dart
+++ b/lib/layout/game.dart
@@ -41,6 +41,11 @@ class Game {
       progressIndicator += ' (+' + myProvider.progressDelta.toString() + ')';
     }
 
+    Color maxMovesCountColor = Colors.grey;
+    if (myProvider.movesCount > myProvider.maxMovesCount) {
+      maxMovesCountColor = Colors.red;
+    }
+
     return Table(
       children: [
         TableRow(
@@ -60,7 +65,7 @@ class Game {
                   style: TextStyle(
                     fontSize: 15,
                     fontWeight: FontWeight.w600,
-                    color: Colors.grey,
+                    color: maxMovesCountColor,
                   ),
                 ),
               ]
diff --git a/lib/layout/parameters.dart b/lib/layout/parameters.dart
index c901d7b9de78bf8e5796eac4ef006d858ee46e38..30b9665db705c13e78444237e5b5dc94a181a7b9 100644
--- a/lib/layout/parameters.dart
+++ b/lib/layout/parameters.dart
@@ -13,8 +13,8 @@ class Parameters {
         mainAxisSize: MainAxisSize.min,
         mainAxisAlignment: MainAxisAlignment.center,
         children: [
-          // Parameters.buildParameterSelector(myProvider, 'level'),
-          // SizedBox(height: 5),
+          Parameters.buildParameterSelector(myProvider, 'level'),
+          SizedBox(height: 5),
           Parameters.buildParameterSelector(myProvider, 'size'),
           SizedBox(height: 5),
           Parameters.buildParameterSelector(myProvider, 'colors'),
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 07bbb174b55f2abd0cc369bdcb0e5971d24a2405..24178992c06361f75293dc948036de3051bd00b0 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -142,6 +142,20 @@ class Data extends ChangeNotifier {
     return getColorsCountFromParameter(_parameterColorsDefault);
   }
 
+  int getMovesCountLimitDeltaFromLevelParameter(String parameterLevel) {
+    switch(parameterLevel) {
+      case 'easy': { return 5; }
+      break;
+      case 'medium': { return 3; }
+      break;
+      case 'hard': { return 1; }
+      break;
+      case 'nightmare': { return -1; }
+      break;
+    }
+    return getMovesCountLimitDeltaFromLevelParameter(_parameterLevelDefault);
+  }
+
   int get boardSize => _boardSize;
   void updateBoardSize(int boardSize) {
     _boardSize = boardSize;
diff --git a/lib/utils/board_utils.dart b/lib/utils/board_utils.dart
index 3f1ef2f96337c4d00c8efccc6802d13311c890ca..029cbed521f085ab4efd5c25442a161f0bd844c2 100644
--- a/lib/utils/board_utils.dart
+++ b/lib/utils/board_utils.dart
@@ -50,7 +50,10 @@ class BoardUtils {
     int boardSize = myProvider.boardSize;
     int colorsCount = myProvider.colorsCount;
 
-    return (30 * (boardSize * colorsCount) / (17 * 6)).round();
+    int baseMaxMovesCount = (30 * (boardSize * colorsCount) / (17 * 6)).round();
+    int deltaFromLevel = myProvider.getMovesCountLimitDeltaFromLevelParameter(myProvider.parameterLevel);
+
+    return baseMaxMovesCount + deltaFromLevel;
   }
 
   static fillBoardFromFirstCell(Data myProvider, int value) {