def charsWithCounter(s):
res = {}
for c in s:
res[c] = res.get(c, 0) + 1
return res
def isValid(str_source, str_to_compare):
if list(set(str_to_compare) - set(str_source)):
return False
dct_source = charsWithCounter(str_source)
dct_to_compare = charsWithCounter(str_to_compare)
for key in dct_to_compare.keys():
if key in dct_source and dct_to_compare[key] > dct_source[key]:
return False
return True
dct = {
"DENOOPRSU": ["PONDEROUS", "PONDEROUSZ", "PONDEROU S", "SPONSORED", "ONEROUS", "USURPER", "ABC", " ", "OOO", "O"],
"CDEIORSVY": ["DISCOVERY"]
}
for k, v in dct.items():
for s in v:
print("'{}' --> '{}' : {}".format(k, s, str(isValid(k, s))))
ZGVmIGNoYXJzV2l0aENvdW50ZXIocyk6CiAgICByZXMgPSB7fQogICAgZm9yIGMgaW4gczoKICAgICAgICByZXNbY10gPSByZXMuZ2V0KGMsIDApICsgMQogICAgcmV0dXJuIHJlcwoKZGVmIGlzVmFsaWQoc3RyX3NvdXJjZSwgc3RyX3RvX2NvbXBhcmUpOgogICAgaWYgbGlzdChzZXQoc3RyX3RvX2NvbXBhcmUpIC0gc2V0KHN0cl9zb3VyY2UpKToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkY3Rfc291cmNlID0gY2hhcnNXaXRoQ291bnRlcihzdHJfc291cmNlKQogICAgZGN0X3RvX2NvbXBhcmUgPSBjaGFyc1dpdGhDb3VudGVyKHN0cl90b19jb21wYXJlKQoKICAgIGZvciBrZXkgaW4gZGN0X3RvX2NvbXBhcmUua2V5cygpOgogICAgICAgIGlmIGtleSBpbiBkY3Rfc291cmNlIGFuZCBkY3RfdG9fY29tcGFyZVtrZXldID4gZGN0X3NvdXJjZVtrZXldOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBUcnVlCgoKZGN0ID0gewogICAgIkRFTk9PUFJTVSI6IFsiUE9OREVST1VTIiwgIlBPTkRFUk9VU1oiLCAiUE9OREVST1UgUyIsICJTUE9OU09SRUQiLCAiT05FUk9VUyIsICJVU1VSUEVSIiwgIkFCQyIsICIgIiwgIk9PTyIsICJPIl0sCiAgICAiQ0RFSU9SU1ZZIjogWyJESVNDT1ZFUlkiXQp9Cgpmb3IgaywgdiBpbiBkY3QuaXRlbXMoKToKICAgIGZvciBzIGluIHY6CiAgICAgICAgcHJpbnQoIid7fScgLS0+ICd7fScgOiB7fSIuZm9ybWF0KGssIHMsIHN0cihpc1ZhbGlkKGssIHMpKSkp