```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
var s, t string
var k int
fmt.Fscan(in, &s, &t, &k)
isBad := [26]bool{}
for i := 0; i < 26; i++ {
if t[i] == '0' {
isBad[i] = true
}
}
type pair struct {
h1, h2 uint64
}
seen := make(map[pair]struct{})
n := len(s)
for i := 0; i < n; i++ {
badCount := 0
var h1, h2 uint64
for j := i; j < n; j++ {
if isBad[s[j]-'a'] {
badCount++
}
if badCount > k {
break
}
h1 = (h1*131 + uint64(s[j])) % 1000000007
h2 = h2*37 + uint64(s[j])
seen[pair{h1, h2}] = struct{}{}
}
}
fmt.Println(len(seen))
}
```