#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 5;
const long long INF = 9e18;
int coords[MAXN];
pair<long long, pair<int, int> > dpR[MAXN], dpL[MAXN];
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  for (int i = 0; i < int(n); i++) scanf("%d", &coords[i + 1]);
  dpR[n] = {0, {0, 1}};
  for (int i = int(n) - 1; i >= int(1); i--) {
    dpR[i].second.first = dpR[i + 1].second.first + 1;
    dpR[i].second.second = dpR[i + 1].second.second;
    if (dpR[i].second.first > m)
      dpR[i].second.first = 1, dpR[i].second.second++;
    dpR[i].first = dpR[i + 1].first +
                   (coords[i + 1] - coords[i]) * 2LL * dpR[i].second.second;
  }
  dpL[1] = {0, {0, 1}};
  for (int i = int(2); i < int(n + 1); i++) {
    dpL[i].second.first = dpL[i - 1].second.first + 1;
    dpL[i].second.second = dpL[i - 1].second.second;
    if (dpL[i].second.first > m)
      dpL[i].second.first = 1, dpL[i].second.second++;
    dpL[i].first = dpL[i - 1].first +
                   (coords[i] - coords[i - 1]) * 2LL * dpL[i].second.second;
  }
  long long mini = INF;
  for (int i = int(1); i < int(n + 1); i++) {
    int tR = upper_bound(coords + 1, coords + n + 1, coords[i]) - coords - 1;
    int tL = lower_bound(coords + 1, coords + n + 1, coords[i]) - coords;
    mini = min(mini, dpL[tL].first + dpR[tR].first);
  }
  printf("%lld", mini);
  return 0;
}
