Pku3633 Copying DNA
给定两个由字符集 构成的 DNA 字符串 和 ,要求用尽量少的步数从 构造出 。
每一步可以从 的某个连续子串,或当前已经构造出的 的某个片段中拷贝一个连续子串,并选择是否将拷贝得到的字符串反转。得到的片段可以随时与其他片段合并,但不能拆分,且所有得到的片段都必须用于构造最终的 。从当前构造出的 中拷贝字符串时,只能从同一个片段中拷贝。
例如,从 构造 :
- 从 中拷贝并反转 ,得到 ;
- 从 中拷贝 ,得到 ;
- 从当前片段中拷贝 ;
- 从当前片段中拷贝并反转 ;
- 从当前片段中拷贝 。
求构造 所需的最少拷贝操作次数。
输入格式
第一行包含一个整数 ,表示测试数据组数,满足 。
接下来每组测试数据包含两行:
- 第一行包含字符串 ,其长度为 ,满足 ;
- 第二行包含字符串 ,其长度为 ,满足 。
输出格式
对于每组测试数据,输出一行:
- 如果可以从 构造出 ,输出所需的最少拷贝操作次数;
- 如果无法构造出 ,输出
impossible。
样例输入
5
ACGT
GTAC
A
C
ACGT
TGCA
ACGT
TCGATCGA
A
AAAAAAAAAAAAAAAAAA
样例输出
2
impossible
1
4
6
数据范围
- 测试数据组数满足 ;
- 字符串 的长度为 ,满足 ;
- 字符串 的长度为 ,满足 ;
- 和 均只包含字符 、、、。
来源与许可
本题题面与测试数据整理自 BZOJ 2485。
样例 1
输入
5
ACGT
GTAC
A
C
ACGT
TGCA
ACGT
TCGATCGA
A
AAAAAAAAAAAAAAAAAA
输出
2
impossible
1
4
6