4158 - 子序列匹配

题目描述

给定两个仅由小写英文字母组成的字符串 ST

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

定义:字符串 A 的子序列是指从 A 中删除零个或任意多个字符后,将剩余字符按原有相对顺序连接而成的字符串。如:字符串 ABCDE 的子序列可以有:ABCDEABDEACECDEE \cdots。但根据定义,字符串 ABCDE 的子序列一定不可能ABEDCCAEEDCBA

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

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

输入

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

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

输出

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

样例

输入

contest
son

输出

10

输入

contest
programming

输出

-1

输入

contest
sentence

输出

33
说明

样例说明 1

对于 S=\text{contest}T=\text{son}

  • i=10 时,s' 的前 10 个字符为 contestcon
  • 可以从中依次选取位置 3 的 s、位置 8 的 o、位置 10 的 n,构成 son
  • i=9 时,前缀为 contestco,无法找到足够的 n 来完成匹配。
  • 因此 10 是满足条件的最小值。

样例说明 2

对于 T=\text{programming},无论将 S=\text{contest} 重复多少次,其前缀中都不存在按顺序出现 programming 所需的全部字母(缺少 pg 等关键字母),故不存在满足条件的 i,输出 -1

数据范围

测试点编号|S||T|
1 \sim 2|S|=1|T|=1
3 \sim 4|S|=2|T|=1
5 \sim 6|S|=1|T|=2
7 \sim 251 \le |S| \le 10^51 \le |T| \le 10^5

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

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 0
通过人数 0
金币数量 3 枚
难度 基础


上一题 下一题