from itertools import combinations def is_cpctf_like(s): # s: 長さ5のリスト for i in range(5): for j in range(i + 1, 5): if i == j: continue same = (s[i] == s[j]) ij = {i + 1, j + 1} valid = same == (ij == {1, 3}) if not valid: return False return True def count_cpctf_like_subsequences(S): N = len(S) count = 0 for indices in combinations(range(N), 5): s = [S[i] for i in indices] if is_cpctf_like(s): count += 1 return count