#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100'000;
int apref[MAXN+1][3], bpref[MAXN+1][3], m[MAXN+1][3][3];
void init(string a, string b) {
vector<int> as, bs;
for (auto c : a) {
if (c == 'A') as.push_back(0);
else if (c == 'T') as.push_back(1);
else as.push_back(2);
}
for (auto c : b) {
if (c == 'A') bs.push_back(0);
else if (c == 'T') bs.push_back(1);
else bs.push_back(2);
}
for (int i = 1; i <= a.size(); i++) {
for (int j = 0; j < 3; j++) apref[i][j] = apref[i-1][j];
apref[i][as[i-1]]++;
for (int j = 0; j < 3; j++) bpref[i][j] = bpref[i-1][j];
bpref[i][bs[i-1]]++;
for (int j = 0; j < 3; j++) for (int k = 0; k < 3; k++) m[i][j][k] += m[i-1][j][k];
m[i][as[i-1]][bs[i-1]]++;
}
}
int get_distance(int x, int y) {
for (int i = 0; i < 3; i++) if ((apref[y+1][i] - apref[x][i]) != (bpref[y+1][i] - bpref[x][i])) return -1;
int ans = 0, g[3][3] = {};
for (int j = 0; j < 3; j++) for (int k = 0; k < 3; k++) g[j][k] = m[y+1][j][k] - m[x][j][k];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == j) continue;
int &u = g[i][j], &v = g[j][i];
int w = min(u, v);
u -= w; v -= w; ans += w;
}
}
ans += 2*(g[0][1] + g[0][2]);
return ans;
}