开始 2026-03-21 00:00:00

童织码编程:月赛B组——3

结束 2026-04-12 00:00:00
Contest is over.
当前 2026-06-10 08:12:02

C. 26年3月-B组(才俊)C. 子序列匹配

描述

给定两个仅由小写英文字母组成的字符串 S 和 T。

考虑将字符串 S 无限次拼接而成的无限长字符串 S′=SSS ...(即 S 重复无限多次)。例如,若 S=abc,则 S′=abcabcabc ...。

定义:字符串 A 的子序列是指从 A 中删除零个或任意多个字符后,将剩余字符按原有相对顺序连接而成的字符串。

如:字符串 ABCDE 的子序列可以有:ABCDE、ABDE、ACE、CDE、E ...。

但根据定义,字符串 ABCDE 的子序列一定不可能有 ABEDC、CAE、EDCBA。

现在要求:判断是否存在正整数 i,使得 T 是 S′ 的前 i 个字符构成的字符串的一个子序列。

如果存在这样的 i,请输出满足条件的最小 i;如果不存在任何满足条件的 i,请输出 -1。

输入

第一行输入仅由小写字母组成的字符串 S。

第二行输入仅由小写字母组成的字符串 T。

输出

输出一个整数,表示满足条件的最小 i。如果不存在,请输出 -1。

样例

输入

contest
son

输出

10

输入

contest
programming

输出

-1

输入

contest
sentence

输出

33

提示

样例说明 1

对于 S=contest、T=son:

当 i=10 时,s′的前 10 个字符为 contestcon。 可以从中依次选取位置 3 的 s、位置 8 的 o、位置 10 的 n,构成 son。

当 i=9 时,前缀为 contestco,无法找到足够的 n 来完成匹配。

因此 10 是满足条件的最小值。

样例说明 2

对于 T=programming,无论将 S=contest 重复多少次,其前缀中都不存在按顺序出现 p、r、o、g、r、a、m、m、i、n、g 所需的全部字母(缺少 p、g 等关键字母),故不存在满足条件的 i,输出 -1。

数据范围

对于 100% 的数据,满足 1≤∣S∣≤10^5, 1≤∣T∣≤10^5,S 和 T 均仅由小写英文字母组成。(∣S∣ 表示字符串 S 的长度)


Submit

登录

注册
时间限制 1 秒
内存限制 128 MB
提交