func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 0x3f3f3f3f;   const int maxn = 200050;   long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }   int isprime(int x) {     for (int i = 2; i <= sqrt(x); i++) {       if (x % i == 0) return 0;     }     return 1;   }   int judge(char ch) {     if (ch ==  a  || ch ==  u )       return 1;     else       return 0;   }   vector<int> e[maxn];   int ans[maxn];   vector<int> v[maxn];   void dfs(int x) {     for (int i = 0; i < e[x].size(); i++) {       dfs(e[x][i]);       for (int j = 0; j < v[e[x][i]].size(); j++) {         v[x].push_back(v[e[x][i]][j]);       }     }   }   int main() {     int n;     string a, b;     cin >> n >> a >> b;     int maxsub[3] = {0};     int adds = 0;     int flg = 0;     for (int i = 0; i < n / 2; i++) {       char s[4];       s[0] = a[i];       s[1] = a[n - i - 1];       s[2] = b[i];       s[3] = b[n - i - 1];       if (a[i] == b[i] && s[1] == s[3]) {         continue;       } else if (a[i] == b[i] || s[1] == s[3]) {         adds++;         continue;       } else if ((s[0] == s[1] && s[2] == s[3])) {         continue;       } else if (s[0] == s[3] && s[1] == s[2]) {         continue;       } else if (s[2] == s[3]) {         adds++;       } else if (s[0] == s[3] || s[1] == s[2]) {         adds++;       } else {         adds += 2;       }     }     if (n % 2 == 1) {       if (a[n / 2] != b[n / 2]) adds++;     }     int sub = 0;     if (maxsub[2] >= 2)       sub = 4;     else if (maxsub[2] == 1)       sub = 2 + min(maxsub[1], 1);     else if (maxsub[2] == 0)       sub = min(maxsub[1], 2);     cout << adds - sub;   }   