爱丽丝的人偶圆舞曲
题号:NC312247
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}爱丽丝正在指挥一排人偶进行圆舞曲表演。总共有 n 个人偶排成一列,每个人偶穿着特定颜色的衣服。我们将衣服的颜色用小写字母 \texttt{a}\texttt{z} 表示,对应的数值分别为 025
\hspace{15pt}爱丽丝认为一个颜色序列是“和谐”的,当且仅当存在一个全局统一的步长 d \left(0 \leqq d \leqq 25\right),使得序列中任意相邻的两个人偶,其颜色数值之差在模 26 意义下恰好为 d-d
\hspace{15pt}具体而言,设颜色数值序列为 v_1, v_2, \dots, v_n。若存在一个整数 d \in [0, 25],使得对于所有 1 < i \leqq n,均满足以下条件之一,则该序列是和谐的:
\hspace{23pt}\bullet\,v_i - v_{i-1} \equiv d \pmod{26}
\hspace{23pt}\bullet\,v_i - v_{i-1} \equiv -d \pmod{26}

\hspace{15pt}爱丽丝手里现在有一个初始的颜色序列 s,她希望通过修改最少数量的人偶衣服颜色,使得整个序列达到和谐状态。请你帮她计算出这个最小修改次数。

【名词解释】
\hspace{15pt}\equiv”符号:表示同余关系。对于整数 ab,若 a 除以 m 所得的余数与 b 除以 m 所得的余数相同,则称 ab 在模 m 意义下同余,记作 a \equiv b \pmod{m}

输入描述:

\hspace{15pt}在一行上输入一个长度为 \textrm{length}(s)、仅由小写英文字母组成的字符串 s \left(1 \leqq \textrm{length}(s) \leqq 10^5\right),代表初始的人偶颜色序列。

输出描述:

\hspace{15pt}输出一个整数,表示将序列变为“和谐”状态所需修改的最少字符数量。
示例1

输入

复制
abca

输出

复制
1

说明

\hspace{15pt}在这个样例中,如果我们将最后一个字符 \texttt{a} 修改为 \texttt{b},序列变为 \texttt{abcb}。此时取步长 d = 1
\hspace{23pt}\bullet\,第二位与第一位之差:\texttt{b} - \texttt{a} = 1
\hspace{23pt}\bullet\,第三位与第二位之差:\texttt{c} - \texttt{b} = 1
\hspace{23pt}\bullet\,第四位与第三位之差:\texttt{b} - \texttt{c} = -1,在模 26 意义下等于 25
\hspace{15pt}由于 1 \equiv 1 \pmod{26}25 \equiv -1 \pmod{26},所有相邻项的差值均符合步长 d=1 的要求。因此 \texttt{abcb} 是和谐的,最少修改次数为 1
示例2

输入

复制
nowcoder

输出

复制
5

备注:

\hspace{15pt}在几乎全部的情况下,PyPy 的运行速度优于 Python,我们建议您选择对应版本的 PyPy 进行提交、而不是 Python。