def count_cpctf_substrings(s): n = len(s) count = 0 # 5つの位置を選ぶすべての組み合わせを考える for i in range(n): for j in range(i+1, n): for k in range(j+1, n): for l in range(k+1, n): for m in range(l+1, n): # 選んだ5文字 substring = [s[i], s[j], s[k], s[l], s[m]] # CPCTF的かどうかを判定 # 1. 1文字目と3文字目が等しい # 2. それ以外の文字はすべて異なる if substring[0] == substring[2] and \ substring[0] != substring[1] and \ substring[0] != substring[3] and \ substring[0] != substring[4] and \ substring[1] != substring[2] and \ substring[1] != substring[3] and \ substring[1] != substring[4] and \ substring[2] != substring[3] and \ substring[2] != substring[4] and \ substring[3] != substring[4]: count += 1 return count