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)); } }