diff --git a/native/jni/src/bigram_dictionary.cpp b/native/jni/src/bigram_dictionary.cpp
index 44dc75e..ef0434c 100644
--- a/native/jni/src/bigram_dictionary.cpp
+++ b/native/jni/src/bigram_dictionary.cpp
@@ -21,6 +21,7 @@
 #include "bigram_dictionary.h"
 #include "binary_format.h"
 #include "bloom_filter.h"
+#include "char_utils.h"
 #include "defines.h"
 #include "dictionary.h"
 
@@ -50,7 +51,7 @@
     int insertAt = 0;
     while (insertAt < MAX_RESULTS) {
         if (frequency > bigramFreq[insertAt] || (bigramFreq[insertAt] == frequency
-                && length < Dictionary::wideStrLen(
+                && length < getCodePointCount(MAX_WORD_LENGTH,
                         bigramCodePoints + insertAt * MAX_WORD_LENGTH))) {
             break;
         }
diff --git a/native/jni/src/dictionary.h b/native/jni/src/dictionary.h
index 121cf05..83676b2 100644
--- a/native/jni/src/dictionary.h
+++ b/native/jni/src/dictionary.h
@@ -65,10 +65,6 @@
     int getDictBufAdjust() const { return mDictBufAdjust; }
     virtual ~Dictionary();
 
-    // public static utility methods
-    // static inline methods should be defined in the header file
-    static int wideStrLen(int *str);
-
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(Dictionary);
     const uint8_t *mDict;
@@ -84,17 +80,5 @@
     const BigramDictionary *mBigramDictionary;
     SuggestInterface *mGestureSuggest;
 };
-
-// public static utility methods
-// static inline methods should be defined in the header file
-inline int Dictionary::wideStrLen(int *str) {
-    if (!str) return 0;
-    int length = 0;
-    while (*str) {
-        str++;
-        length++;
-    }
-    return length;
-}
 } // namespace latinime
 #endif // LATINIME_DICTIONARY_H
