'Union is the maximum of value in either of the input counters.
>>> Counter(\'abbb\') | Counter(\'bcc\')
Counter({\'b\': 3, \'c\': 2, \'a\': 1})'

def __or__(self, other):

    if (not isinstance(other, Counter)):
        return NotImplemented
    result = Counter()
    for (elem, count) in self.items():
        other_count = other[elem]
        newcount = (other_count if (count < other_count) else count)
        if (newcount > 0):
            result[elem] = newcount
    for (elem, count) in other.items():
        if ((elem not in self) and (count > 0)):
            result[elem] = count
    return result
