#include <bits/stdc++.h>
using namespace std;
#define for1(i,m,n) for(int i=m,n_=(n);i<=n_;i++)
#define for0(i,m,n) for(int i=m;i<n;i++)
#define forr1(i,m,n) for(int i=m;i>=n;i--)
#define forr2(i,m,n) for(int i=m;i>n;i--)
#define mini(a,b) (a)=min((a),(b))
#define maxi(a,b) (a)=max((a),(b))
#define ll long long
#define el '\n'
#define fi first
#define se second
#define ii pair<int,int>
#define vll(i) i.begin(),i.end()
#define pb push_back
#define fr front()
#define MASK(i) ((1ll) << (i))
#define BIT(i,n) (((i)>>(n))&1)
const string NAME= "hamming";
const int N=1e6;
const int BASE = 27;
const ll MOD=1e9 + 2277 ;
int pw[N + 3], hash[N + 3], f[N + 3], mol[N + 3];
int POW( int n, int k){
int s = 1;
while( k){
if( k % 2 == 1) s = 1ll* s *n %MOD;
n = 1ll * n * n % MOD;
k /= 2;
}
return s;
}
int main() {
if (fopen((NAME + ".INP").c_str(), "r")) {
freopen((NAME + ".INP").c_str(), "r", stdin);
freopen((NAME + ".OUT").c_str(), "w", stdout);
}
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
pw[ 0 ] = 1;
for1(i,1,N) pw[ i ] = 1ll * pw[ i - 1 ] * BASE % MOD;
string s, k; cin >> s >> k;
s = ' ' + s;
k = ' ' + k;
int K = 0;
mol[N] = POW(pw[N], MOD - 2);
forr1(i, N - 1, 0) mol[i] = (1ll* mol[i + 1] * BASE) % MOD;
for0(i, 1, k.size())
K = (1ll* K + 1ll * (k[i] - 'a') * pw[i]) % MOD;
for0(i, 1, s.size())
f[i] = ( 1ll* f[ i - 1] + 1ll* (s[i] - 'a') * pw[i]) % MOD;
int ans = 0;
for0(i, k.size() - 1 , s.size() ){
if( K == 1ll*((f[i] - f[ i - k.size() + 1] ) % MOD + MOD) * mol[i - k.size() + 1 ] % MOD ) ans ++;
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGZvcjEoaSxtLG4pIGZvcihpbnQgaT1tLG5fPShuKTtpPD1uXztpKyspCiNkZWZpbmUgZm9yMChpLG0sbikgZm9yKGludCBpPW07aTxuO2krKykKI2RlZmluZSBmb3JyMShpLG0sbikgZm9yKGludCBpPW07aT49bjtpLS0pCiNkZWZpbmUgZm9ycjIoaSxtLG4pIGZvcihpbnQgaT1tO2k+bjtpLS0pCiNkZWZpbmUgbWluaShhLGIpIChhKT1taW4oKGEpLChiKSkKI2RlZmluZSBtYXhpKGEsYikgKGEpPW1heCgoYSksKGIpKQojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVsICdcbicKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSB2bGwoaSkgaS5iZWdpbigpLGkuZW5kKCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmciBmcm9udCgpCgojZGVmaW5lIE1BU0soaSkgKCgxbGwpIDw8IChpKSkKI2RlZmluZSBCSVQoaSxuKSAoKChpKT4+KG4pKSYxKQpjb25zdCBzdHJpbmcgTkFNRT0gImhhbW1pbmciOwpjb25zdCBpbnQgTj0xZTY7CmNvbnN0IGludCBCQVNFID0gMjc7CmNvbnN0IGxsIE1PRD0xZTkgKyAyMjc3IDsKaW50IHB3W04gKyAzXSwgaGFzaFtOICsgM10sIGZbTiArIDNdLCBtb2xbTiArIDNdOwppbnQgUE9XKCBpbnQgbiwgaW50IGspewogIGludCBzID0gMTsKICB3aGlsZSggayl7CiAgICBpZiggayAlIDIgPT0gMSkgcyA9IDFsbCogcyAqbiAlTU9EOwogICAgbiA9IDFsbCAqIG4gKiBuICUgTU9EOwogICAgayAvPSAyOwogIH0KICByZXR1cm4gczsKfQppbnQgbWFpbigpIHsKaWYgKGZvcGVuKChOQU1FICsgIi5JTlAiKS5jX3N0cigpLCAiciIpKSB7CmZyZW9wZW4oKE5BTUUgKyAiLklOUCIpLmNfc3RyKCksICJyIiwgc3RkaW4pOwpmcmVvcGVuKChOQU1FICsgIi5PVVQiKS5jX3N0cigpLCAidyIsIHN0ZG91dCk7Cn0KaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CmNpbi50aWUoMCk7CmNvdXQudGllKDApOwpwd1sgMCBdID0gMTsKICBmb3IxKGksMSxOKSBwd1sgaSBdID0gMWxsICogcHdbIGkgLSAxIF0gKiBCQVNFICUgTU9EOwogIHN0cmluZyBzLCBrOyBjaW4gPj4gcyA+PiBrOwogIHMgPSAnICcgKyBzOwogIGsgPSAnICcgKyBrOwogICBpbnQgSyA9IDA7CiAgbW9sW05dID0gUE9XKHB3W05dLCBNT0QgLSAyKTsKICBmb3JyMShpLCBOIC0gMSwgMCkgIG1vbFtpXSA9ICgxbGwqIG1vbFtpICsgMV0gKiBCQVNFKSAlIE1PRDsKICAKICBmb3IwKGksIDEsIGsuc2l6ZSgpKQogICBLID0gICgxbGwqIEsgKyAxbGwgKiAoa1tpXSAtICdhJykgKiBwd1tpXSkgJSBNT0Q7CiAgIAogIAogIGZvcjAoaSwgMSwgcy5zaXplKCkpCiAgIGZbaV0gPSAoIDFsbCogZlsgaSAtIDFdICsgMWxsKiAoc1tpXSAtICdhJykgKiBwd1tpXSkgJSBNT0Q7CiAgaW50IGFucyA9IDA7CiAgZm9yMChpLCBrLnNpemUoKSAtIDEgLCBzLnNpemUoKSApewogICAgaWYoIEsgPT0gMWxsKigoZltpXSAtIGZbIGkgLSBrLnNpemUoKSArIDFdICkgJSBNT0QgKyBNT0QpICogbW9sW2kgLSBrLnNpemUoKSArIDEgXSAlIE1PRCAgICkgYW5zICsrOwogIH0KIGNvdXQgPDwgYW5zOwogcmV0dXJuIDA7Cn0=