#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
#define ll long long
#define all(x) x.begin(),x.end()
typedef tree<
int,
null_type,
greater<int>,
rb_tree_tag,
tree_order_statistics_node_update
> ordered_set;
ll MOD = 1000000007;
ll oo = 1e15;
ll const N = 1e4;
ll matching[N + 1][20];
ll stringsL[20];
ll maskSize[1ll << 20];
ll n, ans = oo;
ll len(ll x) {
ll ret = 0;
while (x) {
ret += (x & 1);
x /= 2;
}
return ret;
}
string s;
ll go(ll mask) {
//base case
if (mask == 0) return 0ll;
//transition
ll ch1 = -oo;
ll size = 0;
if (~maskSize[mask]) {
size = maskSize[mask];
} else {
for (ll i = 0; i < n; i++) {
if ((mask & (1ll << i))) {
size += stringsL[i];
}
}
maskSize[mask] = size;
}
for (ll i = 0; i < n; i++) {
if (mask & (1ll << i)) {
ll idx = go(mask ^ (1ll << i));
ll ch = matching[idx][i] + idx;
ll size2 = size;
if (ch >= s.length()) {
ans = min(ans, size2);
}
ch1 = max(ch1, ch);
}
}
return ch1;
}
void solve(ll test_case) {
cin >> s;
cin >> n;
memset(maskSize, -1, sizeof maskSize);
//preprocessing
string ts[n];
for (ll i = 0; i < n; i++) {
cin >> ts[i];
stringsL[i] = ts[i].length();
}
for (ll i = 0; i < n; i++) {
for (ll j = 0; j < s.length(); j++) {
ll s_ptr = j;
ll size = 0;
for (ll k = 0; s_ptr < s.length() && k < ts[i].length(); k++) {
if (s[s_ptr] == ts[i][k]) {
size++;
s_ptr++;
}
}
matching[j][i] = size;
}
}
//dp part
//definition:
//go(mask) -> maximum matching using elements mask
go((1ll << n) - 1);
cout << ans << endl;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r",stdin);
freopen("output.txt", "w",stdout);
#endif
bool calc = false;
// calc = true;
if (calc) {
cout << 2 * 2 * 4 << endl;
// cout << (1ll << (20)) << endl;
return 0;
}
ll t = 1;
// cin >> t;
for (ll i = 1; i <= t; i++) {
solve(i);
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KCnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLHguZW5kKCkKCnR5cGVkZWYgdHJlZTwKICAgIGludCwKICAgIG51bGxfdHlwZSwKICAgIGdyZWF0ZXI8aW50PiwKICAgIHJiX3RyZWVfdGFnLAogICAgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlCj4gb3JkZXJlZF9zZXQ7CgpsbCBNT0QgPSAxMDAwMDAwMDA3OwoKbGwgb28gPSAxZTE1OwoKbGwgY29uc3QgTiA9IDFlNDsKbGwgbWF0Y2hpbmdbTiArIDFdWzIwXTsKbGwgc3RyaW5nc0xbMjBdOwpsbCBtYXNrU2l6ZVsxbGwgPDwgMjBdOwpsbCBuLCBhbnMgPSBvbzsKCmxsIGxlbihsbCB4KSB7CiAgICBsbCByZXQgPSAwOwogICAgd2hpbGUgKHgpIHsKICAgICAgICByZXQgKz0gKHggJiAxKTsKICAgICAgICB4IC89IDI7CiAgICB9CiAgICByZXR1cm4gcmV0Owp9CgpzdHJpbmcgczsKCmxsIGdvKGxsIG1hc2spIHsKICAgIC8vYmFzZSBjYXNlCiAgICBpZiAobWFzayA9PSAwKSByZXR1cm4gMGxsOwogICAgLy90cmFuc2l0aW9uCiAgICBsbCBjaDEgPSAtb287CiAgICBsbCBzaXplID0gMDsKICAgIGlmICh+bWFza1NpemVbbWFza10pIHsKICAgICAgICBzaXplID0gbWFza1NpemVbbWFza107CiAgICB9IGVsc2UgewogICAgICAgIGZvciAobGwgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgaWYgKChtYXNrICYgKDFsbCA8PCBpKSkpIHsKICAgICAgICAgICAgICAgIHNpemUgKz0gc3RyaW5nc0xbaV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbWFza1NpemVbbWFza10gPSBzaXplOwogICAgfQogICAgZm9yIChsbCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChtYXNrICYgKDFsbCA8PCBpKSkgewogICAgICAgICAgICBsbCBpZHggPSBnbyhtYXNrIF4gKDFsbCA8PCBpKSk7CiAgICAgICAgICAgIGxsIGNoID0gbWF0Y2hpbmdbaWR4XVtpXSArIGlkeDsKICAgICAgICAgICAgbGwgc2l6ZTIgPSBzaXplOwogICAgICAgICAgICBpZiAoY2ggPj0gcy5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgYW5zID0gbWluKGFucywgc2l6ZTIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNoMSA9IG1heChjaDEsIGNoKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gY2gxOwp9Cgp2b2lkIHNvbHZlKGxsIHRlc3RfY2FzZSkgewogICAgY2luID4+IHM7CiAgICBjaW4gPj4gbjsKICAgIG1lbXNldChtYXNrU2l6ZSwgLTEsIHNpemVvZiBtYXNrU2l6ZSk7CiAgICAvL3ByZXByb2Nlc3NpbmcKICAgIHN0cmluZyB0c1tuXTsKICAgIGZvciAobGwgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gdHNbaV07CiAgICAgICAgc3RyaW5nc0xbaV0gPSB0c1tpXS5sZW5ndGgoKTsKICAgIH0KICAgIGZvciAobGwgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBmb3IgKGxsIGogPSAwOyBqIDwgcy5sZW5ndGgoKTsgaisrKSB7CiAgICAgICAgICAgIGxsIHNfcHRyID0gajsKICAgICAgICAgICAgbGwgc2l6ZSA9IDA7CiAgICAgICAgICAgIGZvciAobGwgayA9IDA7IHNfcHRyIDwgcy5sZW5ndGgoKSAmJiBrIDwgdHNbaV0ubGVuZ3RoKCk7IGsrKykgewogICAgICAgICAgICAgICAgaWYgKHNbc19wdHJdID09IHRzW2ldW2tdKSB7CiAgICAgICAgICAgICAgICAgICAgc2l6ZSsrOwogICAgICAgICAgICAgICAgICAgIHNfcHRyKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbWF0Y2hpbmdbal1baV0gPSBzaXplOwogICAgICAgIH0KICAgIH0KICAgIC8vZHAgcGFydAogICAgLy9kZWZpbml0aW9uOgogICAgLy9nbyhtYXNrKSAtPiBtYXhpbXVtIG1hdGNoaW5nIHVzaW5nIGVsZW1lbnRzIG1hc2sKICAgIGdvKCgxbGwgPDwgbikgLSAxKTsKICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7Cn0KCnNpZ25lZCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsc3RkaW4pOwogICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3IixzdGRvdXQpOwojZW5kaWYKICAgIGJvb2wgY2FsYyA9IGZhbHNlOwogICAgLy8gY2FsYyA9IHRydWU7CiAgICBpZiAoY2FsYykgewogICAgICAgIGNvdXQgPDwgMiAqIDIgKiA0IDw8IGVuZGw7CiAgICAgICAgLy8gY291dCA8PCAoMWxsIDw8ICgyMCkpIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBsbCB0ID0gMTsKICAgIC8vIGNpbiA+PiB0OwogICAgZm9yIChsbCBpID0gMTsgaSA8PSB0OyBpKyspIHsKICAgICAgICBzb2x2ZShpKTsKICAgIH0KfQo=