每个距离为k的字符两两可以互相交换:我们可以发现 对于%k余数相同的下标字符 这些序列可以任意交换 形成任意的序列
我们可以按%k的余数对这些字符进行存储 然后对存储的字符进行排序
逐个比较排序后的字符串是否相等 如果有一个不相等 则不能满足条件 如果都相等 则可以满足条件
小红和他的朋友小明是大学的室友,他们都对算法和数据结构非常着迷。一天,小明告诉小红他的新女友很喜欢玩字符串游戏,但是她总是拼不出正确的字符串。于是,小明想让小红帮忙解决这个问题。
小红询问小明女友玩的是什么游戏,小明女友告诉他她有两个长度为 n 的字符串 s 和 t,它们都只包含小写字母。她需要通过一些操作使得 s 和 t 相等,每次操作可以选择第一个字符串 s 的两个下标 i 和 j,使得 ∣i−j∣=k,然后交换 si 和 sj。但是她不知道应该如何操作,才能使得 s 和 t 相等。
小红听了小明女友的解释后,决定帮助她解决这个问题,于是他开始思考,如何在有限次操作内,能否使得s和t相等。
第一行输入一个正整数q,代表询问次数。 每组询问输入三行:第一行是两个正整数n,k,代表字符串的长度和交换字符的距离,接下来的两行分别输入一个长度为n的、仅由小写字母组成的字符串,分别代表s和t。
100%的数据满足: 1≤q,n,k≤1000
对于每组询问,如果可以把s变成t,则输出”Yes";否则输出"No"。
输入
3
3 1
cas
sac
4 2
abdc
acbd
4 2
qerw
qwre
输出
Yes
No
Yes