Problem:
不運なイクタ君は持っていた大事な文字列Tをウィルスによって異なる文字列T'に書き換えられてしまった。そのウィルスがTの１文字を異なる文字に書き換えてしまったことがわかっている。すなわちTとT'はちょうど１文字のみ異なっている。イクタ君はTを復元するために、Tが出現していると思われる文書Sを用意した。Tを復元するための下準備としてSの部分文字列でTと一致している可能性があるものの個数を調べたい。

文字列T'と文書Sが与えられる。
S = a1 a2 a3 . . . a|S|の長さ|T'|の部分文字列ak ak+1 . . . ak+|T'|−1(1 ≤ k ≤ |S| − |T'| + 1)
でT'と比較して1文字だけ異なるものの数を求めよ。

Input

入力は以下の形式で与えられる。

S
T'

１行目でSが与えられる。

２行目でT'が与えられる。

S, T'はそれぞれ大文字、小文字のアルファベットのみからなる。

Constraints

入力中の各変数は以下の制約を満たす。

1 ≤ |S| ≤ 300,000

1 ≤ |T'| ≤ |S|

Output

条件を満たす部分文字列の数を1行に出力せよ。

Sample Input 1

abcbcdbc
abc

Output for the Sample Input 1

2

Sの3番目の文字から始まるcbc, Sの6番目の文字から始まるdbcが条件を満たす。

Sample Input 2

aaaaaa
aaaaaa

Output for the Sample Input 2

0

完全に一致する文字列は数えてはならない。

Sample Input 3

baaaaaaaa
b

Output for the Sample Input 3

8

Solution in Ruby (judge verdict: Wrong Answer)

s = gets.chomp
t = gets.chomp
chars = t.split("").uniq & s.split("").uniq
hash = Hash[*(chars.zip((0..chars.size-1).to_a).flatten)]

s_bits = [0] * chars.size
s.each_char.with_index do |c, i|
    next if !hash[c]
    s_bits[hash[c]] |= (1 << i)
end

t_bits = [0] * chars.size
t.each_char.with_index do |c, i|
    next if !hash[c]
    t_bits[hash[c]] |= (1 << i)
end

num = 0 
mask = 2 ** t.size - 1 
(s.size - t.size + 1).times do |i| 
    diff = nil 
    (0..t_bits.size-1).each do |k| 
        x = t_bits[k]
        y = (s_bits[k] >> i) & mask
        z = x ^ y   
        next if z == 0
        if z & (z - 1) == 0
            if diff && diff != z
                diff = nil 
                break
            else
                diff = z 
            end 
        else
            diff = nil 
            break
        end 
    end 
    num += 1 if diff
end
p num