#include <bits/stdc++.h>
using namespace std;
int n, s, l;
int a[100007];
int tmin[100007];
int tmax[100007];
int w[100007];
void init() {
  for (int i = (0); i <= (100007 - 1); ++i) {
    tmin[i] = 1000100007;
    tmax[i] = -1000100007;
    w[i] = 1000100007;
  }
  w[0] = 0;
}
void wstaw(int x) {
  int i = x;
  for (; x > 0; x -= (x & -x)) {
    tmax[x] = max(tmax[x], a[i]);
    tmin[x] = min(tmin[x], a[i]);
  }
}
int read(int x) {
  int i = x;
  int wmin = 1000100007;
  int wmax = -1000100007;
  for (; x <= 100000; x += (x & -x)) {
    wmin = min(wmin, tmin[x]);
    wmax = max(wmax, tmax[x]);
  }
  return wmax - wmin <= s;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> s >> l;
  init();
  for (int i = (1); i <= (n); ++i) cin >> a[i];
  int j = 1;
  for (int i = (1); i <= (n); ++i) {
    wstaw(i);
    while (j + l <= i && (!read(j) || w[j - 1] == 1000100007)) j++;
    if (j + l <= i + 1 && read(j)) w[i] = min(w[i], w[j - 1] + 1);
  }
  if (w[n] == 1000100007)
    cout << -1 << endl;
  else
    cout << w[n] << endl;
  return 0;
}
