B - Elimina letras

Languages: C, C++, Java, Python, C#
Time & Memory limits: (details)

A Fito le han regalado dos cadenas $A$ y $B$, y sabe que $B$ es una subsecuencia de $A$, pero a Fito no le gustan las cadenas largas, y por eso ha decidido eliminar letras de $A$, mientras $B$ sea una subsecuencia de la cadena resultante. Por ejemplo, si $A=matcom$ y $B=acm$, y Fito decide eliminar las letras que están en las posiciones [5, 1, 2, 4, 6, 3] en ese orden, entonces obtendrá la siguiente secuencia de cadenas: matcom, matcom, matcom, matcom. Nótese que los índices de las posiciones de $A$ no varían al eliminarse letras. Fito quiere saber cuándo tendrá que parar.

Input

Las dos primeras líneas de la entrada contienen a las cadenas $A$ y $B$ ($1 \le |B| \lt |A| \le 200000$), una en cada línea, y están compuestas de letras minúsculas del alfabeto inglés.
La tercera línea contiene una permutación de las posiciones de $A$, que indican el orden en el cual Fito eliminará letras de $A$. Las posiciones están numeradas de 1 a $|A|$.

Output

La cantidad de letras que Fito podrá eliminar de $A$.

Sample test(s)

Input
ababcba abb 5 3 4 1 7 6 2
Output
3
Input
bbbabb bb 1 6 3 4 2 5
Output
4