package main
import (
"fmt"
"io"
"os"
)
func nextToken(data []byte, idx *int) []byte {
n := len(data)
for *idx < n && data[*idx] <= 32 {
*idx++
}
start := *idx
for *idx < n && data[*idx] > 32 {
*idx++
}
return data[start:*idx]
}
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
s := nextToken(data, &idx)
t := nextToken(data, &idx)
n := len(s)
m := len(t)
pref := make([]bool, m+1)
j := 0
for i := 0; i < m; i++ {
if j < n && t[i] == s[j] {
j++
}
if j == n {
pref[i+1] = true
}
}
suf := make([]bool, m+1)
j = n - 1
for i := m - 1; i >= 0; i-- {
if j >= 0 && t[i] == s[j] {
j--
}
if j < 0 {
suf[i] = true
}
}
ans := 0
for i := 0; i <= m; i++ {
if pref[i] && suf[i] {
ans++
}
}
fmt.Print(ans)
}