T396767 [10 月入门赛-G] 基因

题目背景

**(你无需理解题目背景)** DNA 由四种碱基组成:腺嘌呤(A)、鸟嘌呤(G)、胞嘧啶(C)和胸腺嘧啶(T)。为了保持化学稳定结构,腺嘌呤和胸腺嘧啶(A 和 T)相互配对,鸟嘌呤和胞嘧啶(C 和 G)相互配对,从而保证了 DNA 稳定的双分子螺旋结构。

题目描述

有一个长度为 DNA 碱基链 $S$,其上有 $n$ 个碱基。可以将其视作为一个只包含有大写字母的字符串。 两条链构成一个 DNA。而该 DNA 较为特殊,其是由上述碱基链 $S$ 进行翻转后,得到另一条碱基链 $S'$。两条碱基链 $S$ 与 $S'$ 对应配对,形成一个 DNA。例如说,对于 $S=\tt{ATCGT}$,则有 $S'=\tt{TGCTA}$,$S$ 与 $S'$ 进行配对。 对于两条碱基链 $S,S'$ 的第 $i$($1 \leq i \leq n$)个碱基,配对规则如下: - 定义 $\tt A$ 与 $\tt T$,$\tt C$ 与 $\tt G$ 为可以配对的碱基。 - 如果 $S_i$ 与 $S_i'$ 为可以配对的碱基,那么该 DNA 的稳定性增加 $i$。 - 如果 $S_i$ 或者 $S_i'$ 中任意一方出现非 $\tt A,\tt T,\tt C,\tt G$ 的碱基,则整个 DNA 的稳定性将直接为 $0$。 现在给定 $T$ 个碱基链 $S$,对每一个碱基链,询问若用其形成 DNA 后,该 DNA 的稳定性如何。

输入格式

第一行输入一个正整数 $T$,表示给定多少条碱基链。对于每一条碱基链: - 第一行输入一个正整数 $n$,表示碱基链的长度; - 第二行输入一个字符串 $S$,表示该条碱基链。

输出格式

对于每条碱基链,输出一行一个整数,表示若用其形成 DNA,则该 DNA 的稳定性为多少。

说明/提示

**【样例解释】** - 对于第一条碱基链,$S=\tt{\red{A}TCG\blue{T}}$,$S'=\tt{\red{T}GCT\blue{A}}$。标红色的一组与蓝色的一组为可以配对的碱基。它们分别是 $S$ 的第 $1$ 个碱基和第 $5$ 个碱基,因此稳定性是 $1+5=6$。 - 对于第二条碱基链,$S=\tt{\red{A}\blue{C}\red{A}\blue{T}\red{G}\blue{T}}$,$S'=\tt{\red{T}\blue{G}\red{T}\blue{A}\red{C}\blue{G}}$,每个对应位置上的碱基都可以配对,因此稳定性是 $1+2+3+\dots+6=21$ - 对于第三条碱基链,出现了非 $\tt A,\tt T,\tt C,\tt G$ 的字母 $\tt U$,因此稳定性为 $0$。 **【数据范围】** 对于所有数据,保证:$1\leq T\leq 5$,$1\leq n\leq 10^5$,$S$ 中出现的所有字母保证为大写英语字母。