Python solution: Divide groups, Time complexity O(mn), n is the number of strings, 21ms reached
Delete all the comments, the fastest submission time is 21ms\n\nclass Solution(object):\n    def minDeletionSize(self, strs):\n        """\n        :type strs: 
Delete all the comments, the fastest submission time is 21ms\n\nclass Solution(object):\n    def minDeletionSize(self, strs):\n        """\n        :type strs: List[str]\n        :rtype: int\n        """\n\t\t\n\t\t\n        self.strs = strs\n        self.results = 0  #Count how many position char need to be delete\n        self.groups = [[0, len(strs) - 1]] #initialize the first group, each group satisfy the order requirment for previous checked positions (left )\n\n        for n in range(len(strs[0])): \n            self.checkGroups(n) #Check whether the nth position char need to be delete or not\n        \n        return self.results\n    \n    def checkGroups(self, n):\n        \n        groups = []\n        \n        for g in self.groups:\n            \n            gStart = g[0]\n            gEnd = g[0]\n            \n            for k in range(g[0], g[1]):\n               \n               if(self.strs[k][n] == self.strs[k + 1][n]): \n                    gEnd += 1\n                    if(k == g[1] - 1 and gEnd - gStart > 0): \n                          groups.append([gStart, gEnd])\n               else:  \n                    if(gEnd - gStart > 0):\n                          groups.append([gStart, gEnd])\n                \n                    if(self.strs[k][n] > self.strs[k + 1][n]):  #if any group in self.groups not satifsify the increasing order, then the n th position will be delete \n                          self.results += 1\n                          return\n                    else:\n                          gStart = k + 1\n                          gEnd = k + 1\n\n        self.groups = groups  #If all char in n th position are in right order, then update the groups need to be checked\n
['Python']