#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-2;
struct cplx {
  double x, y;
  cplx(double x1 = 0, double x2 = 0) { x = x1, y = x2; }
} g[2000001], f[2000001];
cplx operator+(cplx a, cplx b) { return cplx(a.x + b.x, a.y + b.y); }
cplx operator-(cplx a, cplx b) { return cplx(a.x - b.x, a.y - b.y); }
cplx operator*(cplx a, cplx b) {
  return cplx(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x);
}
void swap(cplx &a, cplx &b) { swap(a.x, b.x), swap(a.y, b.y); }
int a[2000001], b[2000001];
int r[2000001];
const double Pi = acos(-1);
void fft(cplx f[], int op, int n) {
  for (int i = 0; i < n; i++)
    if (i < r[i]) swap(f[i], f[r[i]]);
  for (int w = 2; w <= n; w <<= 1) {
    int len = w / 2;
    cplx tmp(cos(Pi / len), op * sin(Pi / len));
    for (int k = 0; k < n; k += w) {
      cplx buf(1, 0);
      for (int l = k; l < k + len; l++) {
        cplx tt = f[len + l] * buf;
        f[len + l] = f[l] - tt;
        f[l] = f[l] + tt;
        buf = buf * tmp;
      }
    }
  }
  if (op == -1) {
    for (int i = 0; i < n; i++) f[i].x /= n, f[i].y /= n;
  }
}
char p[2000001];
char q[2000001];
int res[2000001];
int l1, l2, k, n, m;
void solve(char c) {
  for (int i = 0; i <= n; i++) f[i].x = f[i].y = g[i].x = g[i].y = 0;
  int far = -1;
  for (int i = 0; i < l1; i++) {
    if (p[i] == c) far = i + k;
    if (i <= far) f[i].x = 1;
  }
  far = l1;
  for (int i = l1 - 1; i >= 0; i--) {
    if (p[i] == c) far = i - k;
    if (i >= far) f[i].x = 1;
  }
  for (int i = 0; i < l2; i++)
    if (q[i] == c) g[i].x = 1;
  fft(f, 1, n);
  fft(g, 1, n);
  for (int i = 0; i < n; i++) f[i] = f[i] * g[i];
  fft(f, -1, n);
  for (int i = 0; i < n; i++) res[i] += (int)(f[i].x + eps);
}
signed main() {
  int ans = 0;
  scanf("%d%d%d", &l1, &l2, &k);
  cin >> p;
  cin >> q;
  reverse(p, p + l1);
  n = l1, m = l2;
  for (m += n, n = 1; n <= m; n <<= 1)
    ;
  for (int i = 0; i < n; i++) r[i] = (r[i >> 1] >> 1) | ((i & 1) ? n >> 1 : 0);
  solve('A');
  solve('T');
  solve('G');
  solve('C');
  for (int i = 0; i <= l1 - l2; i++)
    if (res[l1 - i - 1] >= l2) ans++;
  printf("%d", ans);
  return 0;
}
