#include <bits/stdc++.h>
using namespace std;
const int N = 200000 + 10;
char cha[N], chb[N];
struct node {
  long long lcnt, lsum, rcnt, rsum;
} num[N][26];
int main() {
  int n;
  while (~scanf("%d%s%s", &n, cha, chb)) {
    for (int i = 0; i < 26; i++) num[n][i].rcnt = num[n][i].rsum = 0;
    for (int i = 0; i < n; i++) {
      int x = cha[i] - 'A';
      for (int j = 0; j < 26; j++) {
        if (j == x) {
          num[i][j].lcnt = i == 0 ? 1 : num[i - 1][j].lcnt + 1;
          num[i][j].lsum = i == 0 ? 1 : num[i - 1][j].lsum + i + 1;
        } else {
          num[i][j].lcnt = i == 0 ? 0 : num[i - 1][j].lcnt;
          num[i][j].lsum = i == 0 ? 0 : num[i - 1][j].lsum;
        }
      }
    }
    for (int i = n - 1; i >= 0; i--) {
      int x = cha[i] - 'A';
      for (int j = 0; j < 26; j++) {
        if (j == x) {
          num[i][j].rcnt = num[i + 1][j].rcnt + 1;
          num[i][j].rsum = num[i + 1][j].rsum + (n - i);
        } else {
          num[i][j].rcnt = num[i + 1][j].rcnt;
          num[i][j].rsum = num[i + 1][j].rsum;
        }
      }
    }
    double ans = 0, base = 0;
    for (int i = 0; i < n; i++) {
      base += 1.0 * (i + 1) * (i + 1);
      int x = chb[i] - 'A';
      ans += num[i][x].lsum * (n - i) + num[i + 1][x].rsum * (i + 1);
    }
    printf("%.10lf\n", ans / base);
  }
}
