#include<bits/stdc++.h>usingnamespacestd;constintinf=1e5;voidsolve(vector<int>&a,intm){a.insert(a.begin(),0);intn=a.size();// dp[i] is the minimum number of operations on the prefix [0 ... i]
// such that the i-th element is retained.
vector<int>dp(n,inf);dp[0]=0;for(inti=0;i<n;i++){for(intj=i-1;j>=0;j--){// Assume that j is the second last retained element.
if(a[i]-a[j]<=(i-j)*m){dp[i]=min(dp[i],dp[j]+i-j-1);}}}intans=n;for(inti=0;i<n;i++){// i-th element is the last retained element, all elements to the
// right are deleted.
ans=min(ans,dp[i]+(n-1-i));}cout<<ans<<endl;}intmain(){intn,m;cin>>n>>m;vector<int>a(n);for(inti=0;i<n;i++){cin>>a[i];}solve(a,m);return0;}