#include "dna.h"
#include <cstdio>
#include <cassert>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int spar[200005][11];
void init(std::string a, std::string b) {
int n=a.size();
for(int i=1;i<=n;i++)
{
for(int j=0;j<=9;j++)
{
spar[i][j]=spar[i-1][j];
}
if(a[i-1]=='A')
{
spar[i][1]++;
}
else if(a[i-1]=='C')
{
spar[i][2]++;
}
else
{
spar[i][3]++;
}
if(b[i-1]=='A')
{
spar[i][1]--;
}
else if(b[i-1]=='C')
{
spar[i][2]--;
}
else
{
spar[i][3]--;
}
if(a[i-1]=='A' && b[i-1]=='C')
{
spar[i][4]++;
}
else if(a[i-1]=='C' && b[i-1]=='A')
{
spar[i][5]++;
}
if(a[i-1]=='T' && b[i-1]=='C')
{
spar[i][6]++;
}
else if(a[i-1]=='C' && b[i-1]=='T')
{
spar[i][7]++;
}
if(a[i-1]=='T' && b[i-1]=='A')
{
spar[i][8]++;
}
else if(a[i-1]=='A' && b[i-1]=='T')
{
spar[i][9]++;
}
}
}
int get_distance(int x, int y) {
int cnt[11];
x++;
y++;
// cout<<"q "<<x<<" "<<y<<'\n';
for(int i=1;i<=9;i++)
{
cnt[i]=spar[y][i]-spar[x-1][i];
//cout<<i<<" "<<cnt[i]<<'\n';
}
if(cnt[1]!=0 ||cnt[2]!=0 ||cnt[3]!=0)
{
return -1;
}
int op=0,rest=0;
op+=min(cnt[4],cnt[5]);
rest+=max(cnt[4],cnt[5])-min(cnt[4],cnt[5]);
op+=min(cnt[6],cnt[7]);
rest+=max(cnt[6],cnt[7])-min(cnt[6],cnt[7]);
op+=min(cnt[8],cnt[9]);
rest+=max(cnt[8],cnt[9])-min(cnt[8],cnt[9]);
//cout<<"op "<<op<<" rest "<<rest<<'\n';
return op+rest/3*2;
}