一、题目核心描述
小红需将字符串 s 通过最少次数的替换,使其成为目标串 t 的子串。具体规则如下:
替换规则:每次可将 s 中的任意字母替换为其在字母表中相邻的字母(环形相邻,如 a 可换 b 或 z,z 可换 a 或 y),1 次替换计 1 次操作。
子串定义:若 t 可通过删除开头、结尾若干字符(可为 0 或全部)得到某字符串,则该字符串是 t 的子串(即 s 最终长度需与 t 的某子串长度一致,因此只需关注 t 中长度等于 s 的子串)。



二、输入输出描述
输入要求
输入内容	约束条件
字符串 s(待修改串)	长度 ≤ 10³,仅含小写字母
字符串 t(目标串)	长度 ≥ len (s) 且 ≤ 10³,仅含小写字母
输出要求
输出一个整数,代表将 s 改为 t 子串所需的最少替换次数。
三、示例解析
示例 1
输入
plaintext
abc  # s(长度 3)
abbc # t(长度 4,需取长度为 3 的子串:"abb"、"bbc")
输出
1
计算逻辑
枚举 t 中长度为 3 的子串:
子串 1:"abb"(t 的前 3 个字符)
子串 2:"bbc"(t 的后 3 个字符)
计算 s 变每个子串的替换次数:
对 s="abc" → 子串 "abb":
字符对应:a→a(0 次)、b→b(0 次)、c→b(1 次,相邻替换),总次数 0+0+1=1。
对 s="abc" → 子串 "bbc":
字符对应:a→b(1 次)、b→b(0 次)、c→c(0 次),总次数 1+0+0=1。
取最小值:两个子串的替换次数均为 1,故输出 1。
示例 2
输入
plaintext
zzzzzz  # s(长度 6)
xyzabc  # t(长度 6,仅 1 个符合条件的子串:自身)
输出
9
计算逻辑
字母映射:将字母转为 0-25(a=0,b=1,…,z=25),s 中每个字符均为 z(25),t 字符对应为 x(23)、y(24)、z(25)、a(0)、b(1)、c(2)。
单个字符替换次数计算(环形最小步数:min(abs(x-y), 26-abs(x-y))):
z(25)→x(23):min(2, 24)=2 次
z(25)→y(24):min(1, 25)=1 次
z(25)→z(25):min(0, 26)=0 次
z(25)→a(0):min(25, 1)=1 次
z(25)→b(1):min(24, 2)=2 次
z(25)→c(2):min(23, 3)=3 次
总次数:2+1+0+1+2+3=9,故输出 9。
四、关键规则与计算逻辑
1. 替换次数计算(核心公式)
对任意两个字母 ch1(来自 s)和 ch2(来自 t 的子串),先转为对应的数字 x(ord(ch1)-ord('a'))和 y(ord(ch2)-ord('a')),最少替换次数为:min(abs(x - y), 26 - abs(x - y))(环形字母表,顺时针、逆时针替换取最小值)
2. 子串枚举范围
t 中长度等于 s 的子串共有 len(t) - len(s) + 1 个,需逐个枚举(如 t 长度 4、s 长度 3 时,子串起始索引为 0、1,共 2 个)。
五、解题思路方向
枚举 t 的有效子串:遍历 t 中所有长度为 len(s) 的子串(起始索引 i 从 0 到 len(t)-len(s))。
计算每个子串的替换成本:对每个有效子串,逐字符计算 s 对应位置字符的替换次数,求和得到该子串的总成本。
取最小成本:所有子串的总成本中,最小值即为答案。
该思路时间复杂度为 O((len(t)-len(s)+1) * len(s)),因 len(s) 和 len(t) 均 ≤ 10³,总操作数 ≤ 10⁶,完全满足时间限制。







import sys

# for line in sys.stdin:
#     a = line.split()
#     print(int(a[0]) + int(a[1]))

def  solution():
    s =input()
    t=input()
    if s in t:
        return 0 
    s_len=len(s)
    t_len=len(t)
    n =t_len-s_len+1
    res=[]
    for i in range(n):  # t 有几个同s 长度相同的
        cur=0
        sub_t=t[i:i+s_len]  # 根据起始位位置取t中等于s 长度的字符串
        #print(s,sub_t)
        for j in range(s_len):
            x= ord(s[j])-ord('a')
            y=ord(sub_t[j])-ord('a')
            cur+=min(abs(x-y),26-abs(x-y))
        res.append(cur)
    print(min(res))

    

solution()