#include <bits/stdc++.h>
using namespace std;
const double pie = acos(-1);
int n, m, i, N, f[1100000], t, s, j, k, chz[266], ans, a[4][1100000],
    b[4][1100000], gs[4], use[1100000];
char s1[1100000], s2[1100000];
struct fs {
  double x, y;
} w[1100000], A[1100000], B[1100000], C[1100000], v, ww;
fs operator+(fs x, fs y) {
  fs t;
  t.x = x.x + y.x;
  t.y = x.y + y.y;
  return t;
}
fs operator-(fs x, fs y) {
  fs t;
  t.x = x.x - y.x;
  t.y = x.y - y.y;
  return t;
}
fs operator*(fs x, fs y) {
  fs t;
  t.x = x.x * y.x - x.y * y.y;
  t.y = x.y * y.x + y.y * x.x;
  return t;
}
void Init() {
  for (i = 1; i < N; i++) f[i] = (f[i >> 1] >> 1) + ((i & 1) << t);
  w[1].x = cos(2 * pie / N);
  w[1].y = sin(2 * pie / N);
  for (i = 2; i <= N; i++) w[i] = w[i - 1] * w[1];
  w[0] = w[N];
}
void FFT(fs *a, int F) {
  int i, j, k;
  for (i = 0; i < N; i++)
    if (i < f[i]) swap(a[i], a[f[i]]);
  for (i = 1; i < N; i <<= 1) {
    s = (N / i) >> 1;
    for (j = 0; j < N; j += i << 1)
      for (k = j; k < j + i; k++) {
        if (F > 0)
          ww = w[(k - j) * s];
        else
          ww = w[N - (k - j) * s];
        v = a[k];
        a[k] = v + ww * a[k + i];
        a[k + i] = v - ww * a[k + i];
      }
  }
  if (F < 0)
    for (i = 0; i < N; i++) a[i].x /= N;
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  chz['A'] = 0;
  chz['C'] = 1;
  chz['G'] = 2;
  chz['T'] = 3;
  for (N = 1; N < n || N < m; N <<= 1, t++)
    ;
  N <<= 1;
  Init();
  scanf("%s", s1);
  scanf("%s", s2);
  for (i = 0; i <= k && i < n; i++) a[chz[s1[i]]][0]++;
  for (i = 1; i < n; i++) {
    for (j = 0; j < 4; j++) a[j][i] = a[j][i - 1];
    if (i > k) a[chz[s1[i - k - 1]]][i]--;
    if (i + k < n) a[chz[s1[i + k]]][i]++;
  }
  for (i = 0; i < n; i++)
    for (j = 0; j < 4; j++) a[j][i] = a[j][i] > 0;
  for (i = 0; i < m; i++) b[chz[s2[i]]][m - i - 1] = 1, gs[chz[s2[i]]]++;
  memset(use, -1, sizeof(use));
  for (i = 0; i < 4; i++) {
    for (j = 0; j < N; j++) A[j].x = a[i][j], A[j].y = 0;
    for (j = 0; j < N; j++) B[j].x = b[i][j], B[j].y = 0;
    FFT(A, 1);
    FFT(B, 1);
    for (j = 0; j < N; j++) C[j] = A[j] * B[j];
    FFT(C, -1);
    for (j = 0; j < N; j++)
      if ((int)(C[j].x + 0.5) != gs[i]) use[j] = 0;
  }
  for (i = 0; i < N; i++)
    if (use[i] < 0) ans++;
  printf("%d\n", ans);
}
