统计每个字符串开始的叠词数量

while True:
    try:
        n = int(input())
        sn = input()
        dp = [0 for _ in range(n)]  # 用来存放当前i坐标字符串开头的叠词数量
        dic = {}  # 用来存放字符串起始位置前的统计各字母数量
        se = list(set(sn))  # 统计字符串中字母种类,用作字典的KEY
        for i in se:  # 统计各字母数量
            dic[i] = sn.count(i)
        for j in range(n):  # 统计第j个字母开头的叠词数量
            c = 0
            dic[sn[j]] -= 1  # 在字典中当前字符串的统计数量减1,保证字典中的统计为当前字符串后的各字母数量
            for k in dic.keys():
                if k != sn[j]:  # 对字典中部等于当前字符的其他欺负分别提取计算
                    c += dic[k]*(dic[k] - 1) / 2  # 当前字符开始与字符K组成的叠词数量为(设K的数量为n) n*(n-1)/2
            dp[j] = int(c)  # 统计结果添加到数组中
        print(sum(dp))
    except: 
        break