#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimization("unroll-loops")
const int N = 2e5 + 5;
const long long int mod = 1e9 + 7;
const long long int Mod = 998244353;
const long double Pi = acos(-1);
const long long int Inf = 4e18;
using namespace std;
void TestCase() {
  int n, k;
  long double ans = 0;
  cin >> n >> k;
  vector<int> p(n), a;
  map<vector<int>, int> m;
  for (int i = 0; i < n; i++) cin >> p[i];
  for (int i = 1; i <= n; i++) a.push_back(i);
  do {
    m[a] = (int)m.size();
  } while (next_permutation(a.begin(), a.end()));
  long double s[k + 1][(int)m.size()];
  for (int i = 0; i <= k; i++) {
    for (int j = 0; j < (int)m.size(); j++) s[i][j] = (long double)0;
  }
  s[0][m[p]] = (long double)(1);
  for (int i = 1; i <= k; i++) {
    for (auto &o : m) {
      vector<int> cur = o.first;
      if (s[i - 1][o.second] == 0) continue;
      for (int u = 0; u < n; u++) {
        for (int v = u; v < n; v++) {
          vector<int> nxt = cur;
          reverse(nxt.begin() + u, nxt.begin() + v + 1);
          long double f = 1;
          f = f / (long double)((n * (n + 1)) / 2);
          s[i][m[nxt]] += s[i - 1][m[cur]] * f;
        }
      }
    }
  }
  for (auto &o : m) {
    int inv = 0;
    for (int i = 0; i < (int)o.first.size(); i++) {
      for (int j = i + 1; j < (int)o.first.size(); j++) {
        if (o.first[i] > o.first[j]) inv++;
      }
    }
    ans += inv * s[k][o.second];
  }
  cout << fixed << setprecision(15) << ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  ;
  int T = 1;
  while (T--) {
    TestCase();
  }
  return 0;
}
