Stickers
In the corner store, there are n different types of stickers available for purchase. Each type of sticker features a d-letter word s_i, composed of uppercase Latin letters. All stickers of the same type are identical, and you can buy as many as you need. Your goal is to create the word t using these stickers, with the option to overlay stickers on top of each other. You are not allowed to cut or alter the stickers in any way.
To put it more formally, you start with a string z made up of m "#" characters (where m is the length of the string t). In one move, you can select any string s_i and an integer p between 0 and m-d. Then, for each j from {1, ..., d}, you replace the (p+j)-th character of the string z with the j-th character of the string s_i (note that characters in the strings are numbered starting from one).
Your task is to determine the minimum number of such moves needed to construct the desired word t.
Input
The first line of input contains two integers n and d (1 ≤ n, d ≤ 50) - the number of sticker types and the number of letters on each sticker.
The next n lines each describe a type of sticker, containing exactly d uppercase Latin letters - the word s_i on the i-th type of sticker.
The final line of input specifies the target word t, which consists of at least one and up to 10^{4} uppercase Latin letters.
Output
Output a single integer representing the minimum number of stickers needed to form the word t. If it is not possible to form the word with the available stickers, output the word "NO" instead of a number.