from typing import List
class BoundCountMap:
def __init__(self, bound: List[List[str]]):
self.data = {}
self.bound = {}
for group in bound:
whole_group = set(group)
for elem in group:
self.data[elem] = 0
self.bound[elem] = whole_group
def __getitem__(self, item):
return self.data.get(item)
def __setitem__(self, key, value):
for group_elem in self.bound[key]:
self.data[group_elem] = value
ZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKCgpjbGFzcyBCb3VuZENvdW50TWFwOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBib3VuZDogTGlzdFtMaXN0W3N0cl1dKToKICAgICAgICBzZWxmLmRhdGEgPSB7fQogICAgICAgIHNlbGYuYm91bmQgPSB7fQogICAgICAgIGZvciBncm91cCBpbiBib3VuZDoKICAgICAgICAgICAgd2hvbGVfZ3JvdXAgPSBzZXQoZ3JvdXApCiAgICAgICAgICAgIGZvciBlbGVtIGluIGdyb3VwOgogICAgICAgICAgICAgICAgc2VsZi5kYXRhW2VsZW1dID0gMAogICAgICAgICAgICAgICAgc2VsZi5ib3VuZFtlbGVtXSA9IHdob2xlX2dyb3VwCgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEuZ2V0KGl0ZW0pCgogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgIGZvciBncm91cF9lbGVtIGluIHNlbGYuYm91bmRba2V5XToKICAgICAgICAgICAgc2VsZi5kYXRhW2dyb3VwX2VsZW1dID0gdmFsdWU=