Buggy python submission (verdict: Runtime Error):
def cmb(n,r):
        if r > n: 
            return 0
        if n - r < r:
             r = n - r
        if r > n: 
            return 0
        if r == 0: 
            return 1
        if r == 1: 
            return n
    
        numerator = [n - r + k + 1 for k in range(r)]
        denominator = [k + 1 for k in range(r)]
    
        for p in range(2,r+1):
            pivot = denominator[p - 1]
            if pivot > 1:
                offset = (n - r) % p
                for k in range(p-1,r,p):
                    numerator[k - offset] /= pivot
                    denominator[k] /= pivot
    
        result = 1
        for k in range(r):
            if numerator[k] > 1:
                result *= int(numerator[k])
    
        return resultr


import collections
N = int(input())
s= [input() for i in range(N)]
ans=0
#各文字列文字列をソート
s=list(map(sorted,s))

s.sort()        #リストをソート
s=list(map(''.join,s))  #リストになっていたものを文字列に変換
clist = collections.Counter(s) #リスト内の各要素の数を数え上げ
kaisu=list(clist.values())

for i in kaisu:
        ans += cmb(i,2)

print(ans)


Fixed submission:
import math
def cmb(n, r):
        if r > n: 
                return 0
        return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))


import collections
N = int(input())
s= [input() for i in range(N)]
ans=0
#各文字列文字列をソート
s=list(map(sorted,s))

s.sort()        #リストをソート
s=list(map(''.join,s))  #リストになっていたものを文字列に変換
clist = collections.Counter(s) #リスト内の各要素の数を数え上げ
kaisu=list(clist.values())

for i in kaisu:
        ans += cmb(i,2)

print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
N = int(input())
s= [input() for i in range(N)]
s=list(map(sorted,s))
ans=0
dp = list(range(N))

for i in range(N):
        for k in range(i+1,N):
                if dp[i] == dp[k]:
                        ans += 1
                else:
                        if s[i] == s[k]:
                                ans += 1
                                dp[k]=min(dp[i],dp[k])
                                dp[i]=dp[k]

print(ans)

Fixed submission:
import math
def cmb(n, r):
        if r > n: 
                return 0
        return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))


import collections
N = int(input())
s= [input() for i in range(N)]
ans=0
#各文字列文字列をソート
s=list(map(sorted,s))

s.sort()        #リストをソート
s=list(map(''.join,s))  #リストになっていたものを文字列に変換
clist = collections.Counter(s) #リスト内の各要素の数を数え上げ
kaisu=list(clist.values())

for i in kaisu:
        ans += cmb(i,2)

print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
N = int(input())
s= [input() for i in range(N)]
ans=0
for i in range(N):
        for k in range(i+1,N):
                A=list(s[i])
                for j in list(s[k]):
                        if j in A:
                                A.remove(j)
                        else:
                                break
                if len(A) == 0:
                        ans += 1

print(ans)


Fixed submission:
import math
def cmb(n, r):
        if r > n: 
                return 0
        return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))


import collections
N = int(input())
s= [input() for i in range(N)]
ans=0
#各文字列文字列をソート
s=list(map(sorted,s))

s.sort()        #リストをソート
s=list(map(''.join,s))  #リストになっていたものを文字列に変換
clist = collections.Counter(s) #リスト内の各要素の数を数え上げ
kaisu=list(clist.values())

for i in kaisu:
        ans += cmb(i,2)

print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
N = int(input())
s= [input() for i in range(N)]
ans=0
for i in range(N):
        for k in range(i+1,N):
                A=list(s[i])
                for j in list(s[k]):
                        if j in A:
                                A.remove(j)
                if len(A) == 0:
                        ans += 1

print(ans)


Fixed submission:
import math
def cmb(n, r):
        if r > n: 
                return 0
        return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))


import collections
N = int(input())
s= [input() for i in range(N)]
ans=0
#各文字列文字列をソート
s=list(map(sorted,s))

s.sort()        #リストをソート
s=list(map(''.join,s))  #リストになっていたものを文字列に変換
clist = collections.Counter(s) #リスト内の各要素の数を数え上げ
kaisu=list(clist.values())

for i in kaisu:
        ans += cmb(i,2)

print(ans)