Python3 🐍 concise solution beats 99%
Code\n\nclass Solution:\n    def minDeletionSize(self, A: List[str]) -> int:\n        m, n = len(A), len(A[0])\n        ans, in_order = 0, [False] * (m-1)\n    
# Code\n```\nclass Solution:\n    def minDeletionSize(self, A: List[str]) -> int:\n        m, n = len(A), len(A[0])\n        ans, in_order = 0, [False] * (m-1)\n        for j in range(n):\n            tmp_in_order = in_order[:]\n            for i in range(m-1):\n\t\t\t\t# previous step, rows are not in order; and current step rows are not in order, remove this column\n                if not in_order[i] and A[i][j] > A[i+1][j]: ans += 1; break  \n\t\t\t\t# previous step, rows are not in order, but they are in order now\n                elif A[i][j] < A[i+1][j] and not in_order[i]: tmp_in_order[i] = True\n\t\t\t# if column wasn\'t removed, update the row order information\n            else: in_order = tmp_in_order  \n            # not necessary, but speed things up\n            if all(in_order): return ans   \n        return ans\n```
['Python3']