枚举每个子串,算它变成“相邻都不同”最少要改几位,然后全部加起来。

void solve(){
    string s;cin>>s;
    int n=s.size();
    vi pre(n+1,0);
    for(int i=0;i<n;++i){
        int x=(s[i]-'0')^(i&1);
        pre[i+1]=pre[i]+x;
    }
    ll ans=0;
    for(int i=0;i<n;++i){
        for(int j=i;j<n;++j){
            int len=j-i+1;
            int c1=pre[j+1]-pre[i];
            int c=(i&1)?(len-c1):c1;
            ans+=min(c,len-c);
        }
    }
    cout<<ans<<endl;
}