#include <bits/stdc++.h>
char a[100005], b[100005];
int map[30], t[30];
int main() {
  while (scanf("%s%s", a, b) != EOF) {
    int n = strlen(b), i, j, m = strlen(a);
    if (m < n) {
      puts("0");
      continue;
    }
    memset(map, 0, sizeof(map));
    memset(t, 0, sizeof(t));
    for (i = 0; i < n; i++) {
      map[b[i] - 'a']++;
    }
    int ans = 0;
    for (i = 0; i < n; i++) {
      if (a[i] != '?') t[a[i] - 'a']++;
    }
    for (i = 0; i < 26; i++) {
      if (t[i] > map[i]) break;
    }
    if (i == 26) ans++;
    for (j = 1; j <= m - n; j++) {
      if (a[j - 1] != '?') t[a[j - 1] - 'a']--;
      if (a[j + n - 1] != '?') t[a[j + n - 1] - 'a']++;
      for (i = 0; i < 26; i++) {
        if (t[i] > map[i]) break;
      }
      if (i == 26) ans++;
    }
    printf("%d\n", ans);
  }
  return 0;
}
