#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
int re[maxn][3][3];
int n;
map<char, int> mp = {{'A', 0}, {'C', 1}, {'T', 2}}; int ca[maxn][3], cb[maxn][3];
void init(string a, string b){
n = a.length();
for(int i=1;i<=n;++i){
for(int j=0;j<3;++j){
for(int k=0;k<3;++k){
re[i][j][k] += re[i-1][j][k];
}
ca[i][j] += ca[i-1][j];
cb[i][j] += cb[i-1][j];
}
int ma = mp[a[i-1]], mb = mp[b[i-1]];
++ca[i][ma];
++cb[i][mb];
++re[i][ma][mb];
}
}
int get_distance(int x, int y){
int *par = ca[y+1], *pal = ca[x], *pbr = cb[y+1], *pbl = cb[x];
for(int i=0;i<3;++i){
if(par[i] - pal[i] != pbr[i] - pbl[i]) return -1;
}
int curr[3][3];
for(int i=0;i<3;++i){
for(int j=0;j<3;++j){
curr[i][j] = re[y+1][i][j] - re[x][i][j];
}
}
int cnt = 0;
for(int i=0;i<3;++i){
for(int j=0;j<3;++j){
if(i == j) continue;
int mn = min(curr[i][j], curr[j][i]);
cnt += mn;
curr[i][j] -= mn;
curr[j][i] -= mn;
}
}
cnt += curr[0][1]*2 + curr[1][0]*2;
return cnt;
}