Change Minimum Characters to Satisfy One of Three Conditions

Python solution:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Solution:
    def minCharacters(self, a, b):
        m, n = len(a), len(b)
        c1 = Counter(ord(c) - 97 for c in a)
        c2 = Counter(ord(c) - 97 for c in b)
        res = m + n - max((c1 + c2).values()) # condition 3
        for i in range(25):
            c1[i + 1] += c1[i]
            c2[i + 1] += c2[i]
            res = min(res, m - c1[i] + c2[i]) # condition 1
            res = min(res, n - c2[i] + c1[i]) # condition 2
        return res