class Solution:
def originalDigits(self, s: str) -> str:
c = collections.Counter(s) # 统计字母频率
cnt = [0] * 10 #表示0-9每个数字出现次数
# z, w, u, x, g 都只在一个数字中,即 0, 2, 4, 6, 8 中出现
cnt[0] = c['z']
cnt[2] = c['w']
cnt[4] = c['u']
cnt[6] = c['x']
cnt[8] = c['g']
# h 只在 3,8 中出现,知道8的次数就可推出3的次数
# f 只在 4,5 中出现,知道4的次数就可推出5的次数
# s 只在 6,7 中出现,知道6的次数就可推出7的次数
cnt[3] = c['h'] - cnt[8]
cnt[5] = c['f'] - cnt[4]
cnt[7] = c['s'] - cnt[6]
# o只在0,1,2,4中出现,知道0、2、4就可推出1
cnt[1] = c['o'] - cnt[0] - cnt[2] - cnt[4]
# 最后剩9,可以通过n、i、e字符求9的次数
# n只在1,7,9中出现,但是n在9中出现2次
# e只在0,1,3,5,7,8,9中出现,但是在3和7中出现2次,这种都会引起歧义
# 因此选择i,只在5,6,8,9中出现,且都只出现一次,没有歧义
cnt[9] = c['i'] - cnt[5] - cnt[6] - cnt[8]
res = ""
for i in range(10):
res += str(i) * cnt[i]
return res