#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

string s ;
vector< vector< int > > v ;
int n, ans( 0 ), has[ 26 ] ;

void sol( int i, int mask ){
    if( i == n ){
        int ar[ 26 ]={};
        for( int i = 0 ; i < 17 ; i++ ){
            if( mask&(1LL<<i) ){
                for( int j = 0 ; j < 26 ; j++ )
                    ar[ j ] += v[ i ][ j ] ;
            }
        }
        for( int i = 0 ; i < 26 ; i++ )
            if( has[ i ] < ar[ i ] )
                return ;
        ans = max( ans, __builtin_popcount(mask));
    }
    else{
        sol( i + 1, mask | (1LL<<i) ) ;
        sol( i + 1, mask ) ;
    }
}

int main() {
    cin >> s >> n ;
    for( char c : s )
        has[ c - 'a' ]++ ;
    v.resize( n, vector< int >( 26, 0 ) ) ;
    for( int i = 0 ; i < n ; i++ ){
        string tmp ;
        cin >> tmp ;
        for( char c : tmp )
            v[ i ][ c - 'a' ]++ ;
    }
    sol( 0, 0 ) ;
    cout << ans << endl ;
    return 0;
}
