#include <bits/stdc++.h>
const int maxn = 2e5 + 10;
char str1[maxn], str2[maxn];
int n;
std::vector<std::pair<int, int> > vec1, vec2;
long long CsumL[maxn], CsumP[maxn], Ccnt[maxn], CsumR[maxn];
inline int lowbit(int x) { return x & (-x); }
inline void addVal(long long C[maxn], int pos, long long val) {
  while (pos <= n) {
    C[pos] += val;
    pos += lowbit(pos);
  }
}
inline long long ask(long long C[maxn], int pos) {
  long long ret = 0;
  while (pos > 0) {
    ret += C[pos];
    pos -= lowbit(pos);
  }
  return ret;
}
inline long long ask(long long C[maxn], int l, int r) {
  if (r < l) return 0;
  return ask(C, r) - ask(C, l - 1);
}
double gao(char ch) {
  double ret = 0;
  vec1.clear();
  vec2.clear();
  for (int i = 1; i <= n; i++) {
    if (str1[i] == ch) vec1.push_back(std::make_pair(i, n - i + 1));
    if (str2[i] == ch) vec2.push_back(std::make_pair(i, n - i + 1));
  }
  std::sort(vec1.begin(), vec1.end());
  std::sort(vec2.begin(), vec2.end());
  memset(CsumL, 0, sizeof(CsumL));
  memset(CsumP, 0, sizeof(CsumP));
  memset(CsumR, 0, sizeof(CsumR));
  memset(Ccnt, 0, sizeof(Ccnt));
  for (int i = 0; i < vec2.size(); i++) {
    int nowl = vec2[i].first, nowr = vec2[i].second;
    addVal(Ccnt, nowr, 1);
    addVal(CsumR, nowr, nowr);
  }
  for (int i = 0, j = 0; i < vec1.size(); i++) {
    while (j < vec2.size() && vec2[j].first <= vec1[i].first) {
      int nowl = vec2[j].first, nowr = vec2[j].second;
      addVal(Ccnt, nowr, -1);
      addVal(CsumR, nowr, -nowr);
      addVal(CsumL, nowr, vec2[j].first);
      addVal(CsumP, nowr, (long long)vec2[j].first * vec2[j].second);
      j++;
    }
    ret += vec1[i].second * ask(CsumL, vec1[i].second, n);
    ret += ask(CsumP, 1, vec1[i].second - 1);
    ret += ask(Ccnt, vec1[i].second, n) * (long long)vec1[i].first *
           vec1[i].second;
    ret += ask(CsumR, 1, vec1[i].second - 1) * vec1[i].first;
  }
  return ret;
}
int main() {
  while (scanf("%d", &n) != EOF) {
    scanf("%s%s", str1 + 1, str2 + 1);
    double cnt = 0, all = 0;
    for (char ch = 'A'; ch <= 'Z'; ++ch) {
      cnt += gao(ch);
    }
    for (int i = 1; i <= n; i++) {
      all += (double)(n - i + 1) * (double)(n - i + 1);
    }
    printf("%.20f\n", cnt / all);
  }
  return 0;
}
