#include <bits/stdc++.h>
using namespace std;
long long n;
long double resp;
string second[2];
vector<long long> L[2][30], R[2][30];
vector<long long> pref[2][30], suf[2][30], prefL[2][30], sufL[2][30];
vector<long long> pos[2][200050];
inline long long sum(vector<long long> &v, long long i, long long j) {
  if (j < i) return 0;
  if (i < 0) return 0;
  return v[j] - (i > 0 ? v[i - 1] : 0);
}
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  cin >> second[0];
  cin >> second[1];
  for (long long i = 0; i < n; i++) {
    long long x = second[0][i] - 'A';
    long long y = second[1][i] - 'A';
    L[0][x].push_back(i + 1);
    L[1][y].push_back(i + 1);
    R[0][x].push_back(n - i);
    R[1][y].push_back(n - i);
    pos[0][x].push_back(i);
    pos[1][y].push_back(i);
  }
  for (long long i = 0; i < 26; i++) {
    long long sum = 0;
    for (long long j = 0; j < (long long)R[0][i].size(); j++) {
      sum += R[0][i][j];
      pref[0][i].push_back(sum);
    }
    sum = 0;
    for (long long j = 0; j < (long long)R[1][i].size(); j++) {
      sum += R[1][i][j];
      pref[1][i].push_back(sum);
    }
    sum = 0;
    for (long long j = 0; j < (long long)L[0][i].size(); j++) {
      sum += L[0][i][j];
      prefL[0][i].push_back(sum);
    }
    sum = 0;
    for (long long j = 0; j < (long long)L[1][i].size(); j++) {
      sum += L[1][i][j];
      prefL[1][i].push_back(sum);
    }
  }
  long long soma = (n * (n + 1) * (2LL * n + 1)) / 6LL;
  for (long long i = 0; i < 26; i++) {
    for (long long j = 0; j < pos[0][i].size(); j++) {
      long long x = pos[0][i][j];
      long long ini = 0, fim = (long long)pos[1][i].size() - 1, mid, best = -1;
      while (fim >= ini) {
        mid = (ini + fim) / 2;
        long long y = pos[1][i][mid];
        if (y >= x) {
          best = mid;
          fim = mid - 1;
        } else
          ini = mid + 1;
      }
      if (best == -1) {
        resp += (long double)((n - pos[0][i][j]) *
                              sum(prefL[1][i], 0,
                                  (long long)prefL[1][i].size() - 1)) /
                (long double)soma;
        continue;
      }
      long long sumR = sum(pref[1][i], best, (long long)pref[1][i].size() - 1);
      long long sumL = sum(prefL[1][i], 0, best - 1);
      long long ans;
      ans = (pos[0][i][j] + 1) * sumR + (n - pos[0][i][j]) * sumL;
      resp += (long double)ans / (long double)(soma);
    }
  }
  cout << setprecision(8) << fixed;
  cout << resp << "\n";
}
