#include <bits/stdc++.h>
using namespace std;
inline bool EQ(double a, double b) { return fabs(a - b) < 1e-9; }
const int INF = 1 << 29;
int N, K;
vector<vector<double>> swapTimes(const vector<vector<double>>& p) {
  vector<vector<double>> total(N, vector<double>(N, 0.0));
  double cnt = 0;
  for (int b = 0; b < (N); ++b)
    for (int e = (b + 1); e <= (N); ++e) {
      vector<vector<double>> t = p;
      for (int i = 0; i < ((e - b) / 2); ++i)
        for (int j = 0; j < (N); ++j) {
          swap(t[j][b + i], t[j][e - i - 1]);
        }
      for (int i = 0; i < ((e - b) / 2); ++i)
        for (int j = 0; j < (N); ++j) {
          swap(t[b + i][j], t[e - i - 1][j]);
        }
      for (int i = 0; i < (N); ++i)
        for (int j = 0; j < (N); ++j) {
          total[i][j] += t[i][j];
        }
      cnt += 1;
    }
  for (int i = 0; i < (N); ++i)
    for (int j = 0; j < (N); ++j) {
      total[i][j] /= cnt;
    }
  return total;
}
int main() {
  scanf("%d%d", &N, &K);
  vector<int> p;
  for (int i = 0; i < (N); ++i) {
    int a;
    scanf("%d", &a);
    p.push_back(a);
  }
  vector<vector<double>> s(N, vector<double>(N, 0));
  for (int i = 0; i < (N); ++i)
    for (int j = 0; j < (N); ++j) {
      s[i][j] = p[i] > p[j];
    }
  for (int i = 0; i < (K); ++i) {
    s = swapTimes(s);
  }
  double sum = 0;
  for (int i = 0; i < (N); ++i)
    for (int j = (i + 1); j <= (N - 1); ++j) {
      sum += s[i][j];
    }
  printf("%.15lf\n", sum);
  return 0;
}
