Python, Simple Solution, defaultdict, set
Request\nPlease upvote if you find helpful. I appreciate it.\n\n\n# Logic\nWhen counting pairs think in terms of points and shapes. With a point, that would be 
# Request\nPlease upvote if you find helpful. I appreciate it.\n\n\n# Logic\nWhen counting pairs think in terms of points and shapes. With a point, that would be a singe unique string. Add a second point and count one line/pair connecting them. When third point is added, count two NEW lines connecting them. Add a fourth point and count three NEW lines connecting all pairs. ETC\n\n\n# Code\n```\nfrom collections import defaultdict\n\nclass Solution:\n    def similarPairs(self, words: List[str]) -> int:\n        # for the ease of adding and checking\n        counter = defaultdict(int)\n        count = 0\n        for word in words:\n            # make a sorted tuple of unique char per string\n            word_tuple = tuple(set(sorted([char for char in word])))\n            # if first point count will be zero\n            # if second point, count incremented by one\n            # if third point, count incremented by two\n            count += counter[word_tuple]\n            counter[word_tuple] += 1\n        # return count\n        return count\n```
['Hash Table', 'Python3']