#include <bits/stdc++.h>
using namespace std;
const int INF = INT_MAX;
const long long INFL = LLONG_MAX;
const int output_precision = 15;
const long double pi = acos(-1);
const bool debug = true;
const int M = 300;
int n;
long long k;
int a[M];
long long f[M];
int reverse(int *a, int s, int t) {
  int cnt = 0;
  for (int(i) = (s), ub1234 = t; (i) <= ub1234; (i)++) {
    for (int(j) = (s), ub1234 = i - 1; (j) <= ub1234; (j)++) {
      if (a[j] < a[i]) {
        cnt++;
      } else {
        cnt--;
      }
    }
  }
  for (int(i) = 0, j1234 = (t - s + 1) / 2; (i) < j1234; (i)++) {
    swap(a[s + i], a[t - i]);
  }
  return cnt;
}
void ask(int *a, int m, int cnt) {
  if (m == k) {
    f[cnt]++;
    return;
  }
  for (int(i) = 0, j1234 = n; (i) < j1234; (i)++) {
    for (int(j) = 0, j1234 = i + 1; (j) < j1234; (j)++) {
      ask(a, m + 1, cnt + reverse(a, j, i));
      reverse(a, j, i);
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cout.precision(output_precision);
  cout << fixed;
  cout.tie(0);
  int cnt = 0;
  cin >> n >> k;
  for (int(i) = 0, j1234 = n; (i) < j1234; (i)++) {
    cin >> a[i];
    for (int(j) = 0, j1234 = i; (j) < j1234; (j)++) {
      if (a[j] > a[i]) {
        cnt++;
      }
    }
  }
  ask(a, 0, cnt);
  long long all = 0;
  for (int(i) = 0, j1234 = n * n; (i) < j1234; (i)++) {
    all += f[i];
  }
  long double ans = 0;
  for (int(i) = 0, j1234 = n * n; (i) < j1234; (i)++) {
    ans += (long double)f[i] / all * i;
  }
  cout << ans << '\n';
}
