#include <bits/stdc++.h>
using namespace std;
int const N = 30;
int const M = 200;
int n;
int m;
int a[N];
double v[M + 1][N * N];
double s[N * N][N * N];
double res;
void readin() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &a[i]);
  }
}
inline int f(int i, int j) { return i * n + j; }
inline int g(int i, int x, int y) {
  return (i >= x && i <= y) ? y - (i - x) : i;
}
void build() {
  double pr = 1.0 / (n * (n + 1) / 2);
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      for (int x = 0; x < n; ++x) {
        for (int y = 0; y < n; ++y) {
          s[f(i, j)][f(x, y)] = 0.0;
        }
      }
    }
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      for (int x = 0; x < n; ++x) {
        for (int y = x; y < n; ++y) {
          int ni = g(i, x, y), nj = g(j, x, y);
          s[f(ni, nj)][f(i, j)] += pr;
        }
      }
    }
  }
}
void solve() {
  build();
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      v[0][f(i, j)] = a[i] > a[j] ? 1.0 : 0.0;
    }
  }
  int total = n * n;
  for (int steps = 1; steps <= m; ++steps) {
    for (int r = 0; r < total; ++r) {
      v[steps][r] = 0.0;
      for (int c = 0; c < total; ++c) {
        v[steps][r] += s[r][c] * v[steps - 1][c];
      }
    }
  }
  res = 0.0;
  for (int i = 0; i < n; ++i) {
    for (int j = i + 1; j < n; ++j) {
      res += v[m][f(i, j)];
    }
  }
  printf("%.9f\n", res);
}
int main() {
  readin();
  solve();
  return 0;
}
