#include <bits/stdc++.h>
int main() {
  long long ans = 0;
  std::string s, p;
  long ss[300], pp[300];
  std::cin >> s;
  std::cin >> p;
  if (p.size() > s.size()) {
    std::cout << 0 << std::endl;
    return 0;
  }
  std::fill_n(ss, 300, 0);
  std::fill_n(pp, 300, 0);
  for (size_t i = 0; i < p.size(); i++) {
    pp[p[i]]++;
  }
  for (size_t i = 0; i < p.size(); i++) {
    if (s[i] != '?') {
      ss[s[i]]++;
    }
  }
  for (size_t i = 0; i < (s.size() - p.size() + 1); i++) {
    size_t j = 96;
    for (; j <= 130; j++) {
      if (pp[j] < ss[j]) {
        break;
      }
    }
    if (j == 131) {
      ans++;
    }
    if (s[i] != '?') {
      ss[s[i]]--;
    }
    if (s[i + p.size()] != '?') {
      ss[s[i + p.size()]]++;
    }
  }
  std::cout << ans << std::endl;
}
