#include <bits/stdc++.h>
using namespace std;
struct letter {
  vector<int> indices;
  vector<long long> backSum;
  vector<long long> frontSum;
};
letter T[26];
int main() {
  int N;
  string s1, s2;
  cin >> N >> s1 >> s2;
  for (int i = 0; i < N; i++) T[s2[i] - 'A'].indices.push_back(i);
  for (int c = 0; c < 26; c++) {
    long long p = 0;
    for (int j = 0; j < T[c].indices.size(); j++) {
      p += 1 + T[c].indices[j];
      T[c].frontSum.push_back(p);
    }
    long long n = 0;
    for (int j = (T[c].indices.size() - 1); j >= 0; j--) {
      n += N - T[c].indices[j];
      T[c].backSum.push_back(n);
    }
    reverse(T[c].backSum.begin(), T[c].backSum.end());
  }
  long double ans = 0;
  for (int i = 0; i < N; i++) {
    int c = s1[i] - 'A';
    vector<int>::iterator it =
        lower_bound(T[c].indices.begin(), T[c].indices.end(), i);
    long long cur = 0;
    if (it != T[c].indices.end())
      cur += ((long long)(i + 1)) * T[c].backSum[it - T[c].indices.begin()];
    if (it != T[c].indices.begin())
      cur +=
          ((long long)(N - i)) * T[c].frontSum[it - T[c].indices.begin() - 1];
    long double curdiv = cur;
    curdiv /= ((long double)N) * ((long double)(N + 1));
    ans += curdiv;
  }
  ans /= ((long double)(2 * N + 1)) / ((long double)6);
  cout << setprecision(10) << ans << endl;
}
