#include <bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define Bit(mask , i) ((mask >> i) & 1)
#define fi first
#define se second
#define _LOG2(nl) 31 - __builtin_clz(nl)
#define c_bit(nl) __builtin_popcount(nl)
#define li pair<long long , int>
#define iii pair<pair<int , int> , int>
#define db double
#define onBit(mask , i) (mask | (1 << i))
#define offBit(mask , i) (mask & (~(1 << i)))
const long long MOD = 1e9 + 7;
const int INF = 8e7;
const int N = 1e3 + 7;
const int S = 252;
vector<char> a[N];
int c[N][S];
string s;
int n;
vector<int> adj[N];
int dist[N][N];
void ktao(){
for (int v = 0 ; v < s.size() ; ++v){
for (int u = 1 ; u <= n ; ++u){
int i = 1 , j = v;
while (i < a[u].size() && j < s.size()){
if (a[u][i] == s[j]) ++j;
++i;
}
c[u][v] = j - v;
}
}
for (int i = 1 ; i <= n ; ++i){
for (int j = 1 ; j <= n ; ++j){
if (a[i][a[i].size() - 1] == a[j][0]) adj[i].push_back(j);
}
}
}
int calc(int u){
int i = 0 , j = 0;
while (i < a[u].size() && j < s.size()){
if (a[u][i] == s[j]) ++j;
++i;
}
return j;
}
void inp(){
cin >> s;
cin >> n;
for (int i = 1 ; i <= n ; ++i){
string x;
cin >> x;
for (char c : x) a[i].push_back(c);
}
ktao();
}
void dijkstra(){
for (int i = 1 ; i <= n ; ++i){
for (int j = 1 ; j <= s.size() ; ++j){
dist[i][j] = INF;
}
}
priority_queue<iii , vector<iii> , greater<iii>> pq;
for (int i = 1 ; i <= n ; ++i){
int tmp = calc(i);
dist[i][tmp] = a[i].size();
pq.push({{a[i].size() , tmp} , i});
}
while (pq.size()){
iii val = pq.top();
pq.pop();
int d_u = val.fi.fi , cnt = val.fi.se , u = val.se;
if (cnt == s.size()) continue;
if (d_u > dist[u][cnt]) continue;
for (int v : adj[u]){
int w = a[v].size() - 1 , n_cnt = cnt + c[v][cnt];
if (dist[v][n_cnt] > dist[u][cnt] + w){
dist[v][n_cnt] = dist[u][cnt] + w;
pq.push({{dist[v][n_cnt] , n_cnt} , v});
}
}
}
}
void solve(){
dijkstra();
int res = INF;
for (int j = 1 ; j <= n ; ++j)
res = min(res , dist[j][s.size()]);
if (res == INF) cout << -1;
else cout << res;
}
int main(){
// freopen("xhmax.inp" , "r" , stdin);
// freopen("xhmax.out" , "w" , stdout);
faster;
inp();
solve();
return 0;
}