밍구开发了下一代聊天应用ChatChatA!
在发布ChatChatA后,一个致命bug报告飞到了밍구手上!在输入消息的过程中,当消息的最后一个字符是某个特定字符,且输入某个特定字符时,消息会“加倍”!
准确解释“加倍”的含义如下:
- 设当前输入的消息为$M$,$M$的最后一个字符为$s$,将要输入的字符为$c$。
- 设导致消息“加倍”的$(s, c)$对构成的集合为$D$。
- 若$(s, c) \in D$,则输入$c$时,$M$变为$M + M + c$,而不是$M + c$!
- 若$(s, c) \notin D$,则输入$c$时,$M$变为$M + c$。
- 若$M$为空字符串,则$M$不会“加倍”。
ChatChatA的用户구밍이想知道输入字符串$T$所需的最少输入次数。
当前消息$M$从空字符串开始,每次输入是以下两种操作之一:
- 向$M$中添加一个字符$c$。根据上述条件,消息可能“加倍”。
- 删除$M$的最后一个字符。注意:仅当$M$不为空字符串时才能选择此操作。
请帮助구밍이求出使当前消息$M$变为$T$所需的最少输入次数。
输入格式
第一行给出$D$的大小$N$($1 \le N \le 676 = 26^2$)。
第二行给出长度为$N$的英文小写字母字符串$S$,第三行给出长度为$N$的英文小写字母字符串$C$。
令$S$的第$i$个字符为$S_i$,$C$的第$i$个字符为$C_i$,则$D=\{(S_i, C_i) : 1 \le i \le N\}$。
$|D|=N$,即不会给出相同的$(S_i, C_i)$对。
第四行给出由英文小写字母组成的字符串$T$($1 \le |T| \le 500\,000$)。
输出格式
第一行输出将当前消息变为$T$所需的最少输入次数。
如果无法将当前消息变为$T$,则输出$-1$。
样例
输入样例 1
1 t a chatchata
输出样例 1
5
输入样例 2
2 ct ha chatchata
输出样例 2
-1
输入样例 3
2 af bd aafaaafaafaaafd
输出样例 3
8