#include <bits/stdc++.h>
using namespace std;
const int inf = 1000000000;
const int MOD = 1000000007;
const double pi = acos(-1.0);
double dp[211][33][33];
int i1, i2;
double get(vector<int> a, int k, double p) {
  double ans = 0;
  int n = (int)((a).size());
  memset(dp, 0, sizeof(dp));
  for (int i = (0); i <= (n - 1); ++i)
    for (int j = (0); j <= (i - 1); ++j) dp[k][i][j] = 1.0;
  for (int step = k - 1; step >= 0; --step)
    for (int pos1 = (0); pos1 <= (n - 1); ++pos1)
      for (int pos2 = (0); pos2 <= (n - 1); ++pos2) {
        if (pos1 == pos2) continue;
        double tot = (n * (n + 1)) / 2;
        for (int i = (0); i <= (n - 1); ++i)
          for (int j = (i); j <= (n - 1); ++j) {
            int p1 = pos1, p2 = pos2;
            if (p1 >= i && p1 <= j) p1 = j - p1 + i;
            if (p2 >= i && p2 <= j) p2 = j - p2 + i;
            dp[step][pos1][pos2] += dp[step + 1][p1][p2] / tot;
          }
      }
  for (int i1 = (1); i1 <= (n); ++i1)
    for (int i2 = (i1 + 1); i2 <= (n); ++i2) {
      int pos1, pos2;
      for (int i = (0); i <= ((int)((a).size()) - 1); ++i)
        if (a[i] == i1)
          pos1 = i;
        else if (a[i] == i2)
          pos2 = i;
      ans += dp[0][pos1][pos2];
    }
  return ans;
}
int main() {
  int n, k;
  cin >> n >> k;
  vector<int> a(n);
  for (int i = (0); i <= (n - 1); ++i) cin >> a[i];
  printf("%.10lf\n", get(a, k, 1));
}
