diff --git a/native/src/correction.cpp b/native/src/correction.cpp
index 654d471..a05be55 100644
--- a/native/src/correction.cpp
+++ b/native/src/correction.cpp
@@ -54,11 +54,16 @@
 void Correction::initCorrectionState(
         const int rootPos, const int childCount, const bool traverseAll) {
     latinime::initCorrectionState(mCorrectionStates, rootPos, childCount, traverseAll);
+    // TODO: remove
+    mCorrectionStates[0].mSkipPos = mSkipPos;
 }
 
 void Correction::setCorrectionParams(const int skipPos, const int excessivePos,
         const int transposedPos, const int spaceProximityPos, const int missingSpacePos) {
+    // TODO: remove
     mSkipPos = skipPos;
+    // TODO: remove
+    mCorrectionStates[0].mSkipPos = skipPos;
     mExcessivePos = excessivePos;
     mTransposedPos = transposedPos;
     mSpaceProximityPos = spaceProximityPos;
@@ -111,6 +116,7 @@
     mNeedsToTraverseAllNodes = mCorrectionStates[outputIndex].mNeedsToTraverseAllNodes;
     mDiffs = mCorrectionStates[outputIndex].mDiffs;
     mSkippedCount = mCorrectionStates[outputIndex].mSkippedCount;
+    mSkipPos = mCorrectionStates[outputIndex].mSkipPos;
     mSkipping = false;
     mMatching = false;
     return true;
@@ -158,6 +164,7 @@
     mCorrectionStates[mOutputIndex].mDiffs = mDiffs;
     mCorrectionStates[mOutputIndex].mSkippedCount = mSkippedCount;
     mCorrectionStates[mOutputIndex].mSkipping = mSkipping;
+    mCorrectionStates[mOutputIndex].mSkipPos = mSkipPos;
     mCorrectionStates[mOutputIndex].mMatching = mMatching;
 }
 
@@ -195,6 +202,12 @@
 
     bool skip = false;
     if (mSkipPos >= 0) {
+        if (mSkippedCount == 0 && mSkipPos < mOutputIndex) {
+            if (DEBUG_DICT) {
+                assert(mSkipPos == mOutputIndex - 1);
+            }
+            ++mSkipPos;
+        }
         skip = mSkipPos == mOutputIndex;
         mSkipping = true;
     }
@@ -229,11 +242,6 @@
             }
         }
 
-        // TODO: remove after allowing combination errors
-        if (skip) {
-            return UNRELATED;
-        }
-
         mWord[mOutputIndex] = c;
         // If inputIndex is greater than mInputLength, that means there is no
         // proximity chars. So, we don't need to check proximity.
diff --git a/native/src/correction.h b/native/src/correction.h
index 62fe386..0aa5660 100644
--- a/native/src/correction.h
+++ b/native/src/correction.h
@@ -120,7 +120,6 @@
     int mMaxEditDistance;
     int mMaxDepth;
     int mInputLength;
-    int mSkipPos;
     int mExcessivePos;
     int mTransposedPos;
     int mSpaceProximityPos;
@@ -137,6 +136,7 @@
     int mDiffs;
     int mMatchedCharCount;
     int mSkippedCount;
+    int mSkipPos;
     bool mNeedsToTraverseAllNodes;
     bool mMatching;
     bool mSkipping;
diff --git a/native/src/correction_state.h b/native/src/correction_state.h
index 7312226..3ff8134 100644
--- a/native/src/correction_state.h
+++ b/native/src/correction_state.h
@@ -31,6 +31,7 @@
     uint8_t mDiffs;
     uint8_t mMatchedCount;
     uint8_t mSkippedCount;
+    int8_t mSkipPos; // should be signed
     bool mMatching;
     bool mSkipping;
     bool mNeedsToTraverseAllNodes;
@@ -49,6 +50,7 @@
     state->mMatching = false;
     state->mSkipping = false;
     state->mNeedsToTraverseAllNodes = traverseAll;
+    state->mSkipPos = -1;
 }
 
 } // namespace latinime
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index bbfaea4..6517bc0 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -193,14 +193,8 @@
 
     PROF_START(2);
     // Suggestion with missing character
-    if (SUGGEST_WORDS_WITH_MISSING_CHARACTER) {
-        for (int i = 0; i < codesSize; ++i) {
-            if (DEBUG_DICT) {
-                LOGI("--- Suggest missing characters %d", i);
-            }
-            getSuggestionCandidates(i, -1, -1);
-        }
-    }
+    LOGI("--- Suggest missing characters");
+    getSuggestionCandidates(0, -1, -1);
     PROF_END(2);
 
     PROF_START(3);
