#include <bits/stdc++.h>
using namespace std;
bool ok(map<char, int> &a, map<char, int> &b) {
  int val = a['?'];
  for (char ch = 'a'; ch <= 'z'; ch++) {
    int x = a[ch], y = b[ch];
    if (x > y) return false;
    val -= (y - x);
  }
  return (!val);
}
int main() {
  string s, t;
  cin >> s >> t;
  int n = s.size(), m = t.size();
  int ans = 0;
  if (n >= m) {
    map<char, int> a, b;
    for (int i = 0; i < m; i++) {
      a[s[i]]++;
      b[t[i]]++;
    }
    if (ok(a, b)) ans++;
    for (int i = m; i < n; i++) {
      char p = s[i], q = s[i - m];
      a[p]++;
      a[q]--;
      if (ok(a, b)) ans++;
    }
  }
  cout << ans << endl;
  return 0;
}
