#include <bits/stdc++.h>
using namespace std;
#define INF 2147483647
int n, m, ans = INF;
int t[507];
int f[507][107];
inline int read()
{
int x = 0, f = 1;
char ch = getchar();
while(ch < '0' || ch > '9')
{
if(ch == '-') f = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9')
{
x = (x << 1) + (x << 3) + (ch ^ 48);
ch = getchar();
}
return x * f;
}
inline int dfs(int k, int x)
{
if(k == 1) return f[k][x] = x;
if(f[k][x] != -1) return f[k][x];
int cnt = INF;
for(int i = 0; i < m * 2; i++)
if(t[k - 1] + i == t[k] + x || t[k - 1] + i + m <= t[k] + x)
cnt = min(cnt, dfs(k - 1, i) + x);
return f[k][x] = cnt;
}
int main()
{
n = read(), m = read();
for(int i = 1; i <= n; i++)
t[i] = read();
sort(t + 1, t + n + 1);
memset(f, -1, sizeof(f));
for(int i = 0; i < m * 2; i++)
ans = min(ans, dfs(n, i));
printf("%d", ans);
return 0;
}