QOJ.ac

QOJ

Limite de temps : 3 s Limite de mémoire : 1024 MB Points totaux : 100 Hackable ✓

#18671. 两倍

Statistiques

밍구开发了下一代聊天应用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

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.