Simple and easy to understand
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n- O(N)\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\nO(1)\n\n# Code\n```\n//O(n*26*26)\nclass Solution {\npublic:\n    bool check_the_k_condition(vector<int>& map,int k){\n        for(auto i:map){\n            if(i!=k && i>0) return false;\n        }\n        return true;\n    }\n    int countCompleteSubstrings(string word, int k) {\n        int len=word.size();\n        int ans=0;\n        for(int i=1;i<=26 && i*k<=len;i++){\n            int c=0;\n            vector<int> map (26,0);\n            for(int j=0;j<i*k;j++){\n                map[word[j]-\'a\']++;\n                if(j>0 && abs(word[j-1]-word[j])>2) c++;                \n            }\n            if(c==0 && check_the_k_condition(map,k)) ans++;\n            \n            for(int j=i*k;j<len;j++){\n                if(abs(word[j-1]-word[j])>2) c++;\n                map[word[j]-\'a\']++;\n                map[word[j-i*k]-\'a\']--;\n                if(abs(word[j-i*k+1]-word[j-i*k])>2) c--;\n                if(c==0 && check_the_k_condition(map,k)) ans++;\n                \n            }\n            \n        }\n        return ans;\n        \n    }\n};\n```
['Sliding Window', 'C++']