Shuffle Game 是庄家和玩家之间的一种简单纸牌游戏。最初,庄家和玩家各获得一副相同的 $n$ 张牌。牌堆中的每张牌都有四种花色之一($C, D, H$ 或 $S$),后跟 13 种点数之一($2, 3, 4, 5, 6, 7, 8, 9, 10, A, J, K$ 或 $Q$)。因此,共有 52 种不同的牌,且牌堆中可能存在相同的牌。在牌发给庄家和玩家后,庄家首先使用任意洗牌方法从发给自己的牌堆中创建自己的牌堆 $X$,并向玩家展示 $X$。之后,玩家通过以下步骤创建牌堆 $Y$:$Y$ 最初为空。
步骤 1. 从发给玩家的牌堆中创建两个牌堆 $P1$ 和 $P2$。$P1$ 和 $P2$ 中的牌数可以不同。
步骤 2. 交错合并 $P1$ 和 $P2$。即将 $P1$ 或 $P2$ 底部的一张牌移动到 $Y$ 的当前顶部,直到 $P1$ 和 $P2$ 中都没有牌为止。注意,玩家不需要交替地从 $P1$ 和 $P2$ 中移动牌到 $Y$。此外,由于庄家和玩家都是从相同的 $n$ 张牌中创建各自的牌堆,因此 $Y$ 总是由与 $X$ 相同的牌组成。
我们将牌堆的序列定义为牌堆中从底到顶的牌的序列。玩家的得分定义为序列 $X$ 和 $Y$ 之间的最长公共子序列的长度。例如,假设给庄家和玩家的 $n = 5$ 张牌的牌堆为 $(C2, CJ, D5, HA, S7)$(此处我们将牌堆表示为序列)。庄家创建牌堆 $X = (CJ, D5, HA, C2, S7)$ 并向玩家展示。之后,玩家通过以下方式创建牌堆:(i) 从给定的牌中创建两个牌堆 $P1 = (D5, HA)$ 和 $P2 = (CJ, S7, C2)$,以及 (ii) 通过交错合并 $P1$ 和 $P2$ 创建 $Y = (D5, CJ, HA, S7, C2)$。在这个例子中,玩家的得分为 3,因为 $(CJ, HA, C2)$ 是序列 $X$ 和 $Y$ 之间的最长公共子序列。现在,在完成步骤 1 后,玩家想要知道在应用步骤 2 后能够达到的最大可能得分。例如,在上述例子中,从 $X$ 和 $Y$ 可以达到的最大可能得分为 4,因为可以通过 $P1$ 和 $P2$ 创建出 $Y = (CJ, D5, HA, S7, C2)$。
给定 $n, X, P1$ 和 $P2$,编写一个程序来计算玩家能够达到的最大可能得分。
输入格式
程序从标准输入读取数据。输入的第一行包含三个正整数 $n, p$ 和 $q$ ($3 \le n \le 500, p + q = n$),其中 $n$ 是初始牌堆中的牌数,$p$ 和 $q$ 分别是 $P1$ 和 $P2$ 中的牌数。接下来的三行分别给出了庄家的牌堆 $X$(包含 $n$ 张牌),以及玩家的两个牌堆 $P1$ 和 $P2$(分别包含 $p$ 和 $q$ 张牌)。$X, P1$ 和 $P2$ 中的每张牌表示为花色(大写字母 $C, D, H$ 或 $S$)后跟点数($2, 3, 4, 5, 6, 7, 8, 9, 10$,大写字母 $A, J, K$ 或 $Q$)。同一行中的牌按从底到顶的顺序排列。
输出格式
程序将结果写入标准输出。仅打印一行。该行应包含玩家在应用步骤 2 后从 $X, P1$ 和 $P2$ 中能够达到的最大可能得分。
样例
样例输入 1
5 2 3 CJ D5 HA C2 S7 D5 HA CJ S7 C2
样例输出 1
4
样例输入 2
6 3 3 C9 HK SQ SQ H2 CA CA HK SQ H2 C9 SQ
样例输出 2
4
样例输入 3
7 3 4 S9 C10 DJ S6 S7 SA DQ DJ S6 S7 S9 C10 SA DQ
样例输出 3
7