#include<bits/stdc++.h>
using namespace std;
map <string,int> mp;
string s1;
void bfs(){
queue<pair<string,int> > que;
que.push(make_pair(s1,1));
while(!que.empty()){
pair<string,int> dt=que.front();
que.pop();
if(mp[dt.first]==0){
mp[dt.first]=dt.second;
}else{
if(dt.second>=mp[dt.first]) continue;
else mp[dt.first]=dt.second;
}
dt.second++;
for(int i=0;i<dt.first.size();i++){
for(int j=0;j<dt.first.size();j++){
if(i==j) continue;
string x=dt.first;
x[i]=dt.first[j];
x[j]=dt.first[i];
que.push(make_pair(x,dt.second));
}
}
for(int i=0;i<dt.first.size();i++){
string x=dt.first.substr(0,i);
if(i!=dt.first.size()-1) x+=dt.first.substr(i+1);
que.push(make_pair(x,dt.second));
}
for(int i=1;i<dt.first.size();i++){
string x=dt.first;
if(x.size()<s1.size()){
for(char v=dt.first[i-1]+1;v<=dt.first[i]-1;v++){
string dt2=x.substr(0,i),dt1=x.substr(i);
x=dt2+v+dt1;
que.push(make_pair(x,dt.second));
x=dt.first;
}
}
}
}
}
int main(){
cin>>s1;
int t;
cin>>t;
while(t--){
string v;
cin>>v;
mp.clear();
bfs();
cout<<(mp[v]==0?-1:mp[v]-1)<<"\n";
}
}