#include <bits/stdc++.h>
using namespace std;
template <class T>
int getbit(T s, int i) {
  return (s >> i) & 1;
}
template <class T>
T onbit(T s, int i) {
  return s | (T(1) << i);
}
template <class T>
T offbit(T s, int i) {
  return s & (~(T(1) << i));
}
template <class T>
int cntbit(T s) {
  return __builtin_popcounll(s);
}
template <class T>
T gcd(T a, T b) {
  T r;
  while (b != 0) {
    r = a % b;
    a = b;
    b = r;
  }
  return a;
}
template <class T>
T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
long double f[33][33][2], g[33][33][2];
int a[33], c[33];
int n, k;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  memset(f, 0, sizeof(f));
  cin >> n >> k;
  for (int i = (1); i <= (n); ++i) cin >> c[i];
  for (int i = (1); i <= (n); ++i)
    for (int j = (i + 1); j <= (n); ++j) {
      f[i][j][0] = 1;
      f[i][j][1] = 0;
    }
  for (int run = (1); run <= (k); ++run) {
    for (int i = (1); i <= (n); ++i)
      for (int j = (i + 1); j <= (n); ++j)
        for (int t = 0; t < (2); ++t) {
          g[i][j][t] = f[i][j][t];
          f[i][j][t] = 0;
        }
    long double p = (long double)(1.0) / (n * (n + 1) / 2);
    for (int i = (1); i <= (n); ++i)
      for (int j = (i); j <= (n); ++j) {
        for (int t = (1); t <= (n); ++t) {
          a[t] = t;
          if (t >= i && t <= j) a[t] = i + j - t;
        }
        for (int u = (1); u <= (n); ++u)
          for (int v = (u + 1); v <= (n); ++v) {
            if (a[u] < a[v]) {
              f[u][v][0] += g[a[u]][a[v]][0] * p;
              f[u][v][1] += g[a[u]][a[v]][1] * p;
            } else {
              f[u][v][0] += g[a[v]][a[u]][1] * p;
              f[u][v][1] += g[a[v]][a[u]][0] * p;
            }
          }
      }
  }
  long double res = 0;
  for (int i = (1); i <= (n); ++i)
    for (int j = (i + 1); j <= (n); ++j) {
      if (c[i] > c[j])
        res += f[i][j][0];
      else
        res += f[i][j][1];
    }
  cout << fixed << setprecision(10) << res << endl;
  return 0;
}
