#define ll long long
#include <bits/stdc++.h>
using namespace std;
int n;
string a1,b1;
vector<int> V;
map<char,map<char,vector<int>>> M;
map<char,vector<int>> M2;
map<char,vector<int>> M1;
void init(string a,string b){
    a1=a;b1=b;
    V.push_back(0);
    M['A']['T'].push_back(0);
    M['A']['C'].push_back(0);
    M['T']['A'].push_back(0);
    M['T']['C'].push_back(0);
    M['C']['A'].push_back(0);
    M['C']['T'].push_back(0);
    for(int i=0;i<a1.size();i++){
        if(a1[i]!=b1[i]){
            if (a1[i] == 'A' && b1[i] == 'T') {
                M['A']['T'].push_back(M['A']['T'][i] + 1);
                M['A']['C'].push_back(M['A']['C'][i]);
                M['T']['A'].push_back(M['T']['A'][i]);
                M['T']['C'].push_back(M['T']['C'][i]);
                M['C']['A'].push_back(M['C']['A'][i]);
                M['C']['T'].push_back(M['C']['T'][i]);
            }
            if (a1[i] == 'A' && b1[i] == 'C') {
                M['A']['T'].push_back(M['A']['T'][i]);
                M['A']['C'].push_back(M['A']['C'][i] + 1);
                M['T']['A'].push_back(M['T']['A'][i]);
                M['T']['C'].push_back(M['T']['C'][i]);
                M['C']['A'].push_back(M['C']['A'][i]);
                M['C']['T'].push_back(M['C']['T'][i]);
            }
            if (a1[i] == 'T' && b1[i] == 'A') {
                M['A']['T'].push_back(M['A']['T'][i]);
                M['A']['C'].push_back(M['A']['C'][i]);
                M['T']['A'].push_back(M['T']['A'][i] + 1);
                M['T']['C'].push_back(M['T']['C'][i]);
                M['C']['A'].push_back(M['C']['A'][i]);
                M['C']['T'].push_back(M['C']['T'][i]);
            }
            if (a1[i] == 'T' && b1[i] == 'C') {
                M['A']['T'].push_back(M['A']['T'][i]);
                M['A']['C'].push_back(M['A']['C'][i]);
                M['T']['A'].push_back(M['T']['A'][i]);
                M['T']['C'].push_back(M['T']['C'][i] + 1);
                M['C']['A'].push_back(M['C']['A'][i]);
                M['C']['T'].push_back(M['C']['T'][i]);
            }
            if (a1[i] == 'C' && b1[i] == 'A') {
                M['A']['T'].push_back(M['A']['T'][i]);
                M['A']['C'].push_back(M['A']['C'][i]);
                M['T']['A'].push_back(M['T']['A'][i]);
                M['T']['C'].push_back(M['T']['C'][i]);
                M['C']['A'].push_back(M['C']['A'][i] + 1);
                M['C']['T'].push_back(M['C']['T'][i]);
            }
            if (a1[i] == 'C' && b1[i] == 'T') {
                M['A']['T'].push_back(M['A']['T'][i]);
                M['A']['C'].push_back(M['A']['C'][i]);
                M['T']['A'].push_back(M['T']['A'][i]);
                M['T']['C'].push_back(M['T']['C'][i]);
                M['C']['A'].push_back(M['C']['A'][i]);
                M['C']['T'].push_back(M['C']['T'][i] + 1);
            }
        }else{
            M['A']['T'].push_back(M['A']['T'][i]);
            M['A']['C'].push_back(M['A']['C'][i]);
            M['T']['A'].push_back(M['T']['A'][i]);
            M['T']['C'].push_back(M['T']['C'][i]);
            M['C']['A'].push_back(M['C']['A'][i]);
            M['C']['T'].push_back(M['C']['T'][i]);
        }
    }
    M2['C'].push_back(0);
    M2['T'].push_back(0);
    M2['A'].push_back(0);
    M1['C'].push_back(0);
    M1['T'].push_back(0);
    M1['A'].push_back(0);
    for(int i=0;i<a1.size();i++){
        if(a1[i]=='C'){
            M2[a1[i]].push_back(M2[a1[i]][i]+1);
            M2['T'].push_back(M2['T'][i]);
            M2['A'].push_back(M2['A'][i]);
        }
        if(a1[i]=='A'){
            M2[a1[i]].push_back(M2[a1[i]][i]+1);
            M2['T'].push_back(M2['T'][i]);
            M2['C'].push_back(M2['C'][i]);
        }
        if(a1[i]=='T'){
            M2[a1[i]].push_back(M2[a1[i]][i]+1);
            M2['A'].push_back(M2['A'][i]);
            M2['C'].push_back(M2['C'][i]);
        }
    }
    for(int i=0;i<a1.size();i++){
        if(b1[i]=='C'){
            M1[b1[i]].push_back(M1[b1[i]][i]+1);
            M1['T'].push_back(M1['T'][i]);
            M1['A'].push_back(M1['A'][i]);
        }
        if(b1[i]=='A'){
            M1[b1[i]].push_back(M1[b1[i]][i]+1);
            M1['T'].push_back(M1['T'][i]);
            M1['C'].push_back(M1['C'][i]);
        }
        if(b1[i]=='T'){
            M1[b1[i]].push_back(M1[b1[i]][i]+1);
            M1['A'].push_back(M1['A'][i]);
            M1['C'].push_back(M1['C'][i]);
        }
    }
}
int get_distance(int x, int y){
    x++;
    y++;
    int n1=M2['C'][y]-M2['C'][x-1];
    int n2=M2['T'][y]-M2['T'][x-1];
    int n3=M2['A'][y]-M2['A'][x-1];
    int m1=M1['C'][y]-M1['C'][x-1];
    int m2=M1['T'][y]-M1['T'][x-1];
    int m3=M1['A'][y]-M1['A'][x-1];
    if(n1==m1 && n2==m2 && n3==m3){
        int res2 = abs((M['A']['C'][y] - M['A']['C'][x - 1]) - (M['C']['A'][y] - M['C']['A'][x - 1]));
        int res3 = abs((M['T']['A'][y] - M['T']['A'][x - 1]) - (M['A']['T'][y] - M['A']['T'][x - 1]));
        int res4 = abs((M['T']['C'][y] - M['T']['C'][x - 1]) - (M['C']['T'][y] - M['C']['T'][x - 1]));
        int res=((res2+res3+res4)/3)*2;
        return res;
    }
    return -1;
}
| # | 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... |