C++ || Keep track of intervals we need to compare
\nclass Solution {\n    using mP = pair<int, int>;\npublic:\n    int minDeletionSize(vector<string>& strs) {\n        int n = strs.size(), col = strs[0].size();
```\nclass Solution {\n    using mP = pair<int, int>;\npublic:\n    int minDeletionSize(vector<string>& strs) {\n        int n = strs.size(), col = strs[0].size();\n        int ans = 0;\n        vector<mP> to_com; //qusetionable interval ranges [i, j)\n        to_com.push_back({0, n});\n        for(int c = 0; c < col; c++){\n            vector<mP> tmp;\n            for(auto &[i,j]: to_com)\n                for(int start = i; start < j;){\n                    int right = start +1;\n                    for(; right < j; right++)\n                        if(strs[start][c] < strs[right][c] ){//different section group\n                            tmp.push_back({start, right});\n                            break;\n                        }\n                        else if(strs[start][c] > strs[right][c]){ //don\'t remove this col\n                            ans++;\n                            goto next_col;\n                        }\n\n                    if(right == j)\n                        tmp.push_back({start, right});\n                    start = right;\n                }\n            to_com = move(tmp);\n            next_col: ;\n        }\n        return ans;\n    }\n};\n```
['C']