CF1151A Maxim and Biology

题目描述

今天在 Kremland 王国的科学中学里上了一节生物课。课程的主题是基因组。我们称字符串 "ACTG" 为基因组。 Maxim 在课堂上感到非常无聊,于是老师给他出了一个任务:给定一个由大写字母组成且长度不少于 $4$ 的字符串 $s$,你需要找出最少需要多少次操作,才能使得基因组作为子串出现在该字符串中。每次操作,你可以将字符串 $s$ 中的任意一个字母替换为字母表中的下一个或上一个字母。例如,对于字母 "D",上一个字母是 "C",下一个字母是 "E"。在本题中,我们规定字母 "A" 的上一个字母是 "Z",下一个字母是 "B";字母 "Z" 的上一个字母是 "Y",下一个字母是 "A"。 请帮助 Maxim 解决老师给他的问题。 如果字符串 $a$ 可以通过删除字符串 $b$ 的若干(可能为零或全部)开头字符和若干(可能为零或全部)结尾字符得到,则称 $a$ 是 $b$ 的一个子串。

输入格式

第一行包含一个整数 $n$($4 \leq n \leq 50$),表示字符串 $s$ 的长度。 第二行包含一个长度恰好为 $n$ 的仅由大写拉丁字母组成的字符串 $s$。

输出格式

输出将字符串 $s$ 变换为包含基因组子串所需的最小操作次数。

说明/提示

在第一个样例中,你应该将字母 "Z" 替换为 "A"(一次操作),将字母 "H" 替换为 "G"(一次操作)。这样你就得到了字符串 "ACTG",其中包含基因组作为子串。 在第二个样例中,我们将字母 "A" 替换为 "C"(两次操作),将字母 "D" 替换为 "A"(三次操作)。这样你就得到了字符串 "ZACTG",其中包含基因组。 由 ChatGPT 4.1 翻译