#include #include #include #include #include #include #include #include #include #include #include using namespace std; char c; int n, z[2000][2000], l, r, d[2000], ans, s[2000], ok[50], cur, qq; int main() { c = getchar(); while(c != '\n') { s[n++] = c - 'a' + 1; c = getchar(); } for (int i = 1; i <= 26; i++) { c = getchar(); ok[i] = c - '0'; } cin >> qq; for (int k = 1; k < n; k++) { l = k - 1, r = -1; for (int i = k; i < n; ++i) { if (i <= r) z[k][i] = min(r - i + 1, z[k][k + i - l - 1]); while(i + z[k][i] < n && s[k + z[k][i] - 1] == s[i + z[k][i]]) ++z[k][i]; if (i + z[k][i] - 1 > r) l = i, r = i + z[k][i] - 1; } } for (int i = 1; i < n; i++) for (int j = i - 1; j < n; j++) d[j] = max(d[j], z[i][j]); for (int i = 0; i < n; i++) { cur = 0; for (int j = i; j < n; j++) { cur += 1 - ok[s[j]]; if (cur > qq) break; if (j >= i + d[i]) ans++; } } cout << ans; return 0; }