N!인 걸 감안해서 순열 돌렸더니 tle 난 코드
## 문자열 받는 리스트
elem = [input() for _ in range(N)]
## 모든 문자를 탐색해서 알파벳 존재여부 확인
dic = defaultdict()
for i in elem:
for j in i:
dic[j] = 1
alp = []
for k,v in dic.items():
alp.append(k)
alp.sort()
## 알파벳 개수가 4개면 9, 8, 7, 6
## 알파벳 개수가 3개면 9, 8, 7
## 항상 높은 순열을 만들어서 이전 순열이 없을 때까지 반복 하기 위한 리스트
nums = [9-i for i in range(len(alp))]
ans = 0
while 1:
## 순열을 돌린 값을 A = 7 이런식으로 넣어줌
for i in range(len(nums)):
dic[alp[i]] = nums[i]
cur_sum = 0
for i in elem:
txt = []
## ABA 이면 dic[A] = 9, dic[B] = 8
## txt = [9, 8, 9] 로 만들어주고 합산
for j in range(len(i)):
txt.append(str(dic[i[j]]))
cur_sum += int(''.join(map(str, txt)))
ans = max(ans, cur_sum)
if not prev_permutation(nums):
break
print(ans)