O(N) Time Complexity DP Solution
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<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution {\n    public int removeAlmostEqualCharacters(String word) {\n        int dp[] = new int[word.length()+1];\n\n        Arrays.fill(dp,-1);\n        return helper(1,word,dp);\n        \n    }\n    \n    int helper(int i , String word, int[] dp){\n        if(i >= word.length()){\n            return 0;\n        }\n        if(dp[i] != -1) return dp[i];\n        \n        if(Math.abs(word.charAt(i) - word.charAt(i-1)) < 2){\n            dp[i] = 1 + helper(i+2,word,dp);\n        }else{\n            dp[i] = helper(i+1,word,dp);\n        }\n\n        return dp[i];\n    }\n}\n```
['Dynamic Programming', 'Recursion', 'Java']