#include <bits/stdc++.h>
using namespace std;
string s, t;
int k, res, sz;
map<char, int> m[4000000];
void add(int v, int k) {
  if (k == s.length()) return;
  if (!m[v].count(s[k])) m[v][s[k]] = ++sz;
  add(m[v][s[k]], k + 1);
}
void sol(int v, int cnt) {
  if (cnt > k) return;
  res++;
  for (map<char, int>::iterator i = m[v].begin(); i != m[v].end(); i++)
    sol(i->second, cnt + abs((t[(i->first) - 'a'] - '0') - 1));
}
int main() {
  cin >> s >> t >> k;
  for (int i = 0; i < s.length(); i++) add(0, i);
  sol(0, 0);
  cout << res - 1;
  return 0;
}
