#include <bits/stdc++.h>
using namespace std;
bool sip;
char A[100005], B[100005];
int C[35], D[35], tam1, tam2, res = 0, puede = 0, quedan;
int main() {
  scanf("%s%s", A, B);
  for (tam1 = 0; A[tam1] != '\0'; tam1++)
    ;
  for (tam2 = 0; B[tam2] != '\0'; tam2++)
    ;
  if (tam2 > tam1) {
    printf("0\n");
    return 0;
  }
  for (int i = 0; i < tam2; i++) {
    ++D[B[i] - 'a'];
  }
  for (int i = 0; i < tam2; i++) {
    if (A[i] != '?') {
      ++C[A[i] - 'a'];
    } else {
      ++puede;
    }
  }
  for (int i = 0; i <= tam1 - tam2; i++) {
    quedan = puede;
    sip = true;
    for (int e = 0; e < 26; e++) {
      if (C[e] > D[e] or D[e] - C[e] > quedan) {
        sip = false;
        break;
      } else {
        quedan -= (D[e] - C[e]);
      }
    }
    if (sip) {
      ++res;
    }
    if (i == tam1 - tam2) {
      continue;
    }
    if (A[i] == '?') {
      --puede;
    } else {
      --C[A[i] - 'a'];
    }
    if (A[i + tam2] == '?') {
      ++puede;
    } else {
      ++C[A[i + tam2] - 'a'];
    }
  }
  printf("%d\n", res);
  return 0;
}
