#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9;
const double PI = 2 * acos(0.0);
const double eps = 1e-9;
int main() {
  ios_base::sync_with_stdio(false);
  string s, t;
  cin >> s >> t;
  int arrt[26];
  memset(arrt, 0, sizeof(arrt));
  for (int i = 0; i < (int)(((int)t.size())); i++) arrt[t[i] - 'a']++;
  if (((int)t.size()) > ((int)s.size()))
    cout << 0 << endl;
  else {
    int arrs[26] = {0};
    for (int i = 0; i < (int)(((int)t.size())); i++)
      if (s[i] != '?') arrs[s[i] - 'a']++;
    bool valid = true;
    int ans = 0;
    for (int i = 0; i < (int)(26); i++)
      if (arrs[i] > arrt[i]) valid = false;
    if (valid) ans++;
    for (int i = ((int)t.size()); i < (int)(((int)s.size())); i++) {
      if (s[i - ((int)t.size())] != '?') arrs[s[i - ((int)t.size())] - 'a']--;
      if (s[i] != '?') arrs[s[i] - 'a']++;
      valid = true;
      for (int i = 0; i < (int)(26); i++)
        if (arrs[i] > arrt[i]) valid = false;
      if (valid) ans++;
    }
    cout << ans << endl;
  }
  return 0;
}
