#295. 加 密 通 话

传统 1000 ms 256 MiB
标准 IO
文本比较 admin 标签

题目描述

{anonymous-user X}: “歪比歪比”

{anonymous-user Y}: “歪比巴伯”

众所周知,大司老师非常擅长加密通话,现小法司得到两个字符串 sstt,它们的长度分别为 n,mn, m

已知大司老师可能将 tt 中某些字符进行更换,而小法司已经拿到了大司老师关于 2626 个字母的替换规则表 aa,小法司想找到所以满足如下条件的 ss 的子串 ss'

  1. t=s|t| = |s'|
  2. i[1,m]\forall i \in [1, m], si=tis'_i = t_i 或者 sis'_i 可以替换为 tit_i

(如 xx 为一个字符串,我们记 xix_ixx 中的第 ii 个字符。)

注:每种字符在满足替换条件的前提下在整个匹配过程中可以替换为不同的其他字符,如 aaa 可以替换为 bcd(前提是 a 能替换为 b/c/d)。

小法司想找到所有这样的子串 ss'

输入格式

第一行有两个整数 n,m(1n,m105)n, m(1 \leq n, m \leq 10^5),表示字符串 sstt 的长度。

接下来两行分别表示两个字符串 s,ts,t, 字符串中的所有字符都是英文小写字母。

接下来输入一个 26×2626\times 26 的矩阵 aaaij=1a_{ij} = 1 表示 ii 代表的字符可以替换为 jj 代表的字符(11 代表字符 a, 22 代表字符 b33 代表字符 c \ldots 2626 代表字符z),而 aij=0a_{ij} = 0 表示不能进行这样的替换。

输入数据保证 aii=1a_{ii} = 1

输出格式

输出一个长度为 nm+1n - m + 1 的字符串,其中第 ii 位为 11 表示以第 ii 位为起始长度为 mm 的子串 ss' 能与 tt 匹配上,第 ii 位为 00 则表示不能。

样例

样例输入

6 3
abcabc
abc
10000000000000000000000000
01000000000000000000000000
00100000000000000000000000
00010000000000000000000000
00001000000000000000000000
00000100000000000000000000
00000010000000000000000000
00000001000000000000000000
00000000100000000000000000
00000000010000000000000000
00000000001000000000000000
00000000000100000000000000
00000000000010000000000000
00000000000001000000000000
00000000000000100000000000
00000000000000010000000000
00000000000000001000000000
00000000000000000100000000
00000000000000000010000000
00000000000000000001000000
00000000000000000000100000
00000000000000000000010000
00000000000000000000001000
00000000000000000000000100
00000000000000000000000010
00000000000000000000000001

样例输出

1001