PYTHON 3 : | 98.48% | EXPLAINED |TWO EASY SOLUTIONS|
eg --> words = ["abc","aabc","bcc"]\n\n stp1)  join --> "abcaabcbc"\n stp2) set --> {\'b\', \'a\', \'c\'}\n stp3) joint.count(\'b\') = 3 , joint.count(\'a\') = 
eg --> words = ["abc","aabc","bcc"]\n\n* stp1)  join --> "abcaabcbc"\n* stp2) set --> {\'b\', \'a\', \'c\'}\n* stp3) joint.count(\'b\') = 3 , joint.count(\'a\') = 3 , joint.count(\'c\') = 4\n* stp4) as  joint.count(\'c\') = 4 therefore it is not multiple of len(words)--->[here 3]\n\tif joint.count(i) % len(words) != 0 : return False\n* \tif joint.count(\'c\') >len(words) and also multiple of len(words) , then also it will work coz we can distribute all \'c\' equally in all the substrings, therfore we are using (%), for eg if count(c) = 6 then we we can distribute \'c\' like [\'....cc\',\'....cc\',\'...cc\']\n\n\n\n**44 ms, faster than 98.48%**\n```\nclass Solution:\n    def makeEqual(self, words: List[str]) -> bool:\n        \n        joint = \'\'.join(words)\n        set1 = set(joint)\n        \n        for i in set1 :\n            if joint.count(i) % len(words) != 0 : return False \n        return True\n```\n\n**56 ms, faster than 85.81%**\n```\nclass Solution:\n    def makeEqual(self, words: List[str]) -> bool:\n        \n        joint = \'\'.join(words)\n        dic = {}\n        \n        for i in joint :\n            if i not in dic :\n                dic[i] = joint.count(i)\n                \n        for v in dic.values() :\n            if v % len(words) != 0 : return False \n        return True\n```\n\n\n**plz upvote if u like : )**
['Python', 'Python3']