#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 100;
const int inf = 1e9;
set<pair<int, int> > t, r;
int a[maxn], dp[maxn], n, s, l;
int main() {
  cin >> n >> s >> l;
  int type = 1;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 1; i <= n; i++) {
    r.insert(make_pair(a[i], i));
    while (!r.empty() and r.rbegin()->first - r.begin()->first > s) {
      r.erase(make_pair(a[type], type));
      type++;
    }
    if (i >= l && dp[i - l] != inf) t.insert(make_pair(dp[i - l], i - l));
    while (!t.empty() and t.begin()->second < type - 1) t.erase(t.begin());
    if (!t.empty())
      dp[i] = t.begin()->first + 1;
    else
      dp[i] = inf;
  }
  if (dp[n] == inf)
    cout << -1 << endl;
  else
    cout << dp[n] << endl;
}
