#include <bits/stdc++.h>
using namespace std;
long long val;
vector<int> chara[30], charb[30];
long long comb[300000], rcomb[300000], total;
string a, b;
long long n;
double mak(int in) {
  int i;
  for (i = 1; i < ((int)charb[in].size()); i++)
    comb[i] = comb[i - 1] + charb[in][i];
  int li = ((int)charb[in].size());
  for (i = 1; i < ((int)charb[in].size()); i++)
    rcomb[i] = rcomb[i - 1] + (n - charb[in][li - i] + 1);
  int inb = 1;
  double ret = 0;
  for (i = 1; i < ((int)chara[in].size()); i++) {
    while (inb < ((int)charb[in].size()) && charb[in][inb] < chara[in][i])
      inb++;
    ret += comb[inb - 1] * (long long)(n - chara[in][i] + 1);
    ret += rcomb[li - inb] * (long long)chara[in][i];
  }
  ret /= total;
  return ret;
}
int main() {
  while (cin >> n) {
    cin >> a >> b;
    int i;
    for (i = 0; i <= 26; i++) {
      chara[i].clear();
      charb[i].clear();
      chara[i].push_back(0);
      charb[i].push_back(0);
    }
    for (i = 0; i < n; i++) {
      chara[a[i] - 'A'].push_back(i + 1);
      charb[b[i] - 'A'].push_back(i + 1);
    }
    val = 0;
    double ans = 0;
    total = (n * (n + 1) * (2 * n + 1)) / 6;
    for (i = 0; i < 26; i++) {
      ans += mak(i);
    }
    printf("%.9lf\n", ans);
  }
  return 0;
}
