#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
#define MAX_N 300005
   
ull B=5575777;
ull mem[MAX_N];
   
ull pow(int x){
  if(x==0)return 1;
  if(mem[x]>0)return mem[x];
  if(x&1)return mem[x]=pow(x-1)*B;
  mem[x]=pow(x/2);
  mem[x]*=mem[x];
  return mem[x];
}
   
int n,m;
char s[MAX_N+MAX_N];
ull p[MAX_N+MAX_N];
   
ull get(int l,int r){
  return p[r]-p[l]*pow(r-l);
}
   
ull get(int l,int r,int x,char ch){
  ull res=p[r]-p[l]*pow(r-l);
  if(l<=x&&x<r){
    int dist=r-x-1;
    res-=pow(dist)*s[x];
    res+=pow(dist)*ch;
  }
  return res;
}
   
bool eq(int a,int b,int l,int r){
  return ( get(a,b) == get(l,r) );
}
   
bool eq(int a,int b,int l,int r, int x,char ch){
  return ( get(a,b,x,ch) == get(l,r,x,ch) );
}
   
bool calc(int a,int b,int l,int r){
  int L=0,R=b-a+1,M;
  while(R-L>1){
    M=(L+R)/2;
    if( eq(a,a+M,l,l+M) ){
      L=M;
    }else{
      R=M;
    }
  }
  if(L==b-a)return false;
  return ( eq(a,b,l,r, l+L, s[a+L]) || eq(a,b,l,r, a+L, s[l+L] )  );
}
   
   
   
int main(){
  scanf("%s",s);
  n=strlen(s);
  scanf("%s",s+n);
  m=strlen(s+n);
  
  p[0]=0;
  for(int i=1;i<=n+m;i++){
    p[i]=p[i-1]*B+s[i-1];
  }
   
  int ans=0;
  for(int i=0;i<n-m+1;i++){
    ans+=calc(i,i+m,n,n+m);
  }
  cout<<ans<<endl;
  return 0;
}