#include "dna.h"
#include <bits/stdc++.h>
const int N = 2e5 + 20;
using namespace std;
int ac[N], at[N],ca[N], ct[N], ta[N], tc[N];
int n;
int cntA[N], cntC[N], cntT[N];
void init(std::string a, std::string b) {
	n = a.size();
	for(int i = 0;i < n;i++){
		if(a[i] == 'A'){
			cntA[i]++;
			if(b[i] == 'C')ac[i]++;
			if(b[i] == 'T')at[i]++;
		}
		if(a[i] == 'C'){
			cntC[i]++;
			if(b[i] == 'A')ca[i]++;
			if(b[i] == 'T')ct[i]++;
		}
		if(a[i] == 'T'){
			cntT[i]++;
			if(b[i] == 'A')ta[i]++;
			if(b[i] == 'C')tc[i]++;
		}
		if(b[i] == 'A')cntA[i]--;
		if(b[i] == 'C')cntC[i]--;
		if(b[i] == 'T')cntT[i]--;
		if(i){
			ac[i] += ac[i - 1];
			at[i] += at[i - 1];
			ca[i] += ca[i - 1];
			ct[i] += ct[i - 1];
			ta[i] += ta[i - 1];
			tc[i] += tc[i - 1];
			cntA[i] += cntA[i - 1];
			cntC[i] += cntC[i - 1];
			cntT[i] += cntT[i - 1];
		}
	}
}
int get_distance(int x, int y) {
	int AC = ac[y];
	int AT = at[y];
	int CA = ca[y];
	int CT = ct[y];
	int TA = ta[y];
	int TC = tc[y];
	int A = cntA[y];
	int T = cntT[y];
	int C = cntC[y];
	if(x){
		--x;
		AC -= ac[x];
		AT -= at[x];
		CA -= ca[x];
		CT -= ct[x];
		TA -= ta[x];
		TC -= tc[x];
		A -= cntA[x];
		T -= cntT[x];
		C -= cntC[x];
	}
//	cout<<A<<" "<<T<<" "<<C<<'\n';
	if(A != 0 || T != 0 || C != 0)return -1;
	return min(AC, CA) + min(CT, TC) + min(TA, AT) + 2 * max(AC -  min(AC, CA), CA -  min(AC, CA));
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |