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文字 chars = [s[i], s[j], s[k], s[l], s[m]] # CPCTF的かどうかを判定 # 1. 1文字目と3文字目が等しい if chars[0] == chars[2]: # 2. それ以外の文字の組み合わせはすべて異なる if chars[0] != chars[1] and chars[0] != chars[3] and chars[0] != chars[4] and \ chars[1] != chars[2] and chars[1] != chars[3] and chars[1] != chars[4] and \ chars[2] != chars[3] and chars[2] != chars[4] and \ chars[3] != chars[4]: count += 1 return count