// I can't tell you what it really is,
// I can only tell you what it feels like.
#include "bits/stdc++.h"
using namespace std;
#define int long long
#define F first
#define S second
#define sz(x) ((int)x.size())
#define rep(i,a,n) for (int i = a; i <= n; ++i)
#define all(v) v.begin(), v.end()
#define pb push_back
#define P pair < int, int >
#define E cout << '\n'
const int mod = 1e9 + 7;
const int N = 1e6 + 1;
int h[26];
int dp[16][N];
inline void solve() {
string s;
cin >> s;
int n, ans(0);
cin >> n;
for (char i : s) {
++h[i-'a'];
}
rep(i,0,n-1) {
cin >> s;
for (char j : s) {
++dp[i][j-'a'];
}
}
// rep(i,0,25) {
// cout << h[i] << ' ';
// }
// E;
int x = 1<<n;
for (int i = 0; i < x; ++i) {
int temp[26] = {};
int cnt (0);
for (int j = 0; j < n; ++j) {
if (i & (1<<j)) {
for (int k = 0; k < 26; ++k) {
temp[k] += dp[j][k];
}
++cnt;
}
}
bool f = 1;
for (int j = 0; j < 26; ++j) {
if (temp[j] > h[j]) {
f = 0;
break;
}
}
if (f) {
// cout << i << '\n';
// rep(i,0,25) {
// cout << temp[i] << ' ';
// }
// E;
ans = max(ans, cnt);
}
}
cout << ans;
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cout.tie(NULL);
int t = 1;
//cin >> t; while(t--)
solve();
return 0;
}
Ly8gSSBjYW4ndCB0ZWxsIHlvdSB3aGF0IGl0IHJlYWxseSBpcywKLy8gSSBjYW4gb25seSB0ZWxsIHlvdSB3aGF0IGl0IGZlZWxzIGxpa2UuCiNpbmNsdWRlICJiaXRzL3N0ZGMrKy5oIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIHN6KHgpICgoaW50KXguc2l6ZSgpKQojZGVmaW5lIHJlcChpLGEsbikgZm9yIChpbnQgaSA9IGE7IGkgPD0gbjsgKytpKQojZGVmaW5lIGFsbCh2KSAgdi5iZWdpbigpLCB2LmVuZCgpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUCBwYWlyIDwgaW50LCBpbnQgPgojZGVmaW5lIEUgY291dCA8PCAnXG4nCgpjb25zdCBpbnQgbW9kID0gMWU5ICsgNzsKY29uc3QgaW50IE4gPSAxZTYgKyAxOwoKaW50IGhbMjZdOwppbnQgZHBbMTZdW05dOwogCmlubGluZSB2b2lkIHNvbHZlKCkgewogICBzdHJpbmcgczsKICAgY2luID4+IHM7CiAgIGludCBuLCBhbnMoMCk7CiAgIGNpbiA+PiBuOwogICBmb3IgKGNoYXIgaSA6IHMpIHsKICAgICAgICsraFtpLSdhJ107CiAgIH0KICAgcmVwKGksMCxuLTEpIHsKICAgICAgIGNpbiA+PiBzOwogICAgICAgZm9yIChjaGFyIGogOiBzKSB7CiAgICAgICAgICAgKytkcFtpXVtqLSdhJ107CiAgICAgICB9CiAgIH0KICAgLy8gcmVwKGksMCwyNSkgewogICAvLyAgICAgY291dCA8PCBoW2ldIDw8ICcgJzsKICAgLy8gfQogICAvLyBFOwogICBpbnQgeCA9IDE8PG47CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgeDsgKytpKSB7CiAgICAgICBpbnQgdGVtcFsyNl0gPSB7fTsKICAgICAgIGludCBjbnQgKDApOwogICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuOyArK2opIHsKICAgICAgICAgICBpZiAoaSAmICgxPDxqKSkgewogICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDI2OyArK2spIHsKICAgICAgICAgICAgICAgICAgIHRlbXBba10gKz0gZHBbal1ba107CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgKytjbnQ7CiAgICAgICAgICAgfQogICAgICAgfQogICAgICAgYm9vbCBmID0gMTsKICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMjY7ICsraikgewogICAgICAgICAgIGlmICh0ZW1wW2pdID4gaFtqXSkgewogICAgICAgICAgICAgICBmID0gMDsKICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgfQogICAgICAgfSAgICAgICAKICAgICAgIGlmIChmKSB7CiAgICAgICAgICAgLy8gY291dCA8PCBpIDw8ICdcbic7CiAgICAgICAgICAgLy8gcmVwKGksMCwyNSkgewogICAgICAgICAgIC8vICAgICBjb3V0IDw8IHRlbXBbaV0gPDwgJyAnOwogICAgICAgICAgIC8vIH0KICAgICAgICAgICAvLyBFOwogICAgICAgICAgIGFucyA9IG1heChhbnMsIGNudCk7CiAgICAgICB9CiAgIH0KICAgY291dCA8PCBhbnM7Cn0Kc2lnbmVkIG1haW4oKSB7CiAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICBjaW4udGllKE5VTEwpOwogIGNvdXQudGllKE5VTEwpOwogIGludCB0ID0gMTsKICAvL2NpbiA+PiB0OyB3aGlsZSh0LS0pCiAgc29sdmUoKTsKICByZXR1cm4gMDsKfQ==