C++ || 95% faster
\nclass Solution {\npublic:\n    int minDeletionSize(vector<string>& strs) {\n        int ans=0;\n        int idx=0;\n        for(int i=1; i<strs.size(); i++){\
```\nclass Solution {\npublic:\n    int minDeletionSize(vector<string>& strs) {\n        int ans=0;\n        int idx=0;\n        for(int i=1; i<strs.size(); i++){\n\t\t\t// if two adjacent strings are not lexicographically ordered as needed,\n            if(strs[i]<strs[i-1]){\n\t\t\t\t// find the index at which above case occurs\n                for(int j=0; j<strs[i].size(); j++){\n                    if(strs[i][j]<strs[i-1][j]){\n                        idx=j;\n                        break;\n                    }\n                }\n\t\t\t\t// delete the entire column at the position `idx`\n\t\t\t\t// here we set them with \'*\' and this works similir to deleting chars at index `idx`.\n                for(auto &a: strs){\n                    a[idx]=\'*\';\n                }\n\t\t\t\t// reiterate from the starting and find the next adjacent pairs then are not lexicographically arrange.\n\t\t\t\t// i=0, coz i++ will make it i=1\n                i=0;\n\t\t\t\t// here we deleted a column, so increase the ans value by one.\n                ans++;\n            }\n        }\n        return ans;\n    }\n};\n```\n\nDo upvote if it helped you!
[]