设原字符串长度为 n,从 (0,0) 出发,整段轨迹执行完后的最终坐标记为 (sx,sy)。
如果删除一段连续子串 s[l+1…r],那么:
多多正在检查一段配送轨迹日志。日志长度为n,从起点(0,0)出发,按顺序记录了每一步移动指令。日志是一个长度为n的字符串,只包含以下四种字符:
多多怀疑其中有一段连续日志被错误写入。现在他可以从原串中删除至多一段连续子串;删除后,剩余的前后两段会直接拼接,执行顺序保持不变。
这里的“至多一段”包含两种边界情况:
可以一个字符都不删;
也可以删掉整个字符串,此时剩余轨迹为空,最终仍停在(0,0)。
目标仓库坐标为(x,y)。请你求出最短需要删除多长的连续子串,才能让拼接后的整段轨迹最终停在(x,y)。
如果原始轨迹本来就停在(x,y),可以不删除任何字符,此时答案为0。
如果不存在合法方案,输出−1。
第一行输入一个整数T,表示测试数据组数。
接下来对每组数据:
对每组数据输出一个整数,表示最短删除长度。如果不存在合法方案,输出−1。
每组数据的答案各占一行。
1≤T≤3
1≤n≤106
Si只会是U/D/L/R
−109≤x,y≤109 单个测试用例内所有测试数据的n之和不超过106
对于30的测试数据,保证单个测试用例内所有测试数据的n之和不超过3000
输入
2
6
RURDLD
0 0
3
UDL
2 0
输出
2
-1
说明
第一组数据中,删除第3到第4个字符RD后,剩余轨迹为RULD,其最终位移变为(0,0)。不存在长度为1的删除方案,因此答案为2。
第二组数据中,无论删除哪一段连续子串,剩余轨迹的最终位移都不可能变成(2,0),因此答案为−1。