说一下对楼主思路的理解
主要有三点:

  1. 弄清楚T中的每一个字符会和S中哪些位置的字符比较:

    结合楼主的图很容易知道:T[i]会与S[i]~S[i+|S|-|T|]比较,i取0~|T|-1

  2. 怎么计算T[i]对答案的贡献

    因为是计算距离,并且字符只会是'a'或者'b',所以T[i]对答案的贡献是

     T[i] == 'a' ? cnt_b : cnt_a;
    

    其中,cnt_a,cnt_b是S[i]~S[i+|S|-|T|]中字符'a'和'b'的个数

  3. T[i+1]对答案的贡献与T[i]的递推关系

    由第一点知道T[i+1]会与S[i+1]~S[i+1+|S|-|T|]比较,相较T[i]时的S[i]~S[i+|S|-|T|],少掉了第一个字符S[i],多了末尾的S[i+1+|S|-|T|],所以T[i+1]时只需要在T[i]统计的基础上,考虑减掉S[i]和加上S[i+1+|S|-|T|],也就是

    S[i] == 'a' ? --cnt_a : --cnt_b;
    S[i + |S| - |T| + 1] == 'a' ? ++cnt_a : ++cnt_b;
    

    T[i+1]对答案的贡献同T[i]时的计算方法