#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;
}
