import java.util.*;
public class JDQ2 {
    public int calculate(String[]strs,String T) {
        int[]results=new int[T.length()+1];
        for(int i=0;i<results.length;i++)results[i]=-1;
        int beginIndex=0;
        return calculate(results,beginIndex,strs,T);
    }
public int calculate(int[]results,int beginIndex,String[]strs,String T) {
    if(results[beginIndex]!=-1)return results[beginIndex];
    List<Integer>result=new ArrayList<Integer>();
    for(int i=0;i<strs.length;i++)
    {
        String S=T.substring(beginIndex);
        int pos=S.indexOf(strs[i]);
        if(pos!=-1)
            result.add(calculate(results,beginIndex+pos+strs[i].length(),strs,T));
    }
    int ans=-1;
    if(!result.isEmpty())ans= 1+Collections.max(result);
    else ans= 0;
    results[beginIndex]=ans;
    return ans;
}
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[]strs= {"aa","b","ac"};        String T="bbaac";
        Scanner sc=new Scanner(System.in);
        //int m=sc.nextInt();        sc.nextLine();
        //String[]strs=new String[m];
        //for(int i=0;i<m;i++)strs[i]=sc.nextLine();
        //String T=sc.nextLine();
        
        System.out.print(new JDQ2().calculate(strs, T));
    }

}