#arc157f. [arc157_f]XY Ladder LCS

[arc157_f]XY Ladder LCS

题目描述

给定长度为 NN 的字符串 SSTT,它们由字符 XY 组成。对于每个 i=1,2,,Ni = 1, 2, \dots, N,你可以交换 SS 的第 ii 个字符和 TT 的第 ii 个字符,也可以选择不交换。这个过程会产生 2N2^N 对字符串,包括重复的。找到最长的字符串,它是这些字符串中某一对的公共子序列(不一定连续的)。如果存在多个这样的字符串,则找到字典序最小的。

什么是公共子序列?字符串 SS 的一个子序列是通过删除 SS 中零个或多个字符,并在不改变顺序的情况下连接剩余字符得到的字符串。字符串 SSTT 的一个公共子序列是同时是 SSTT 的子序列的字符串。(参见示例输出 1)

约束条件

  • 1N501 \leq N \leq 50
  • SSTT 的长度均为 NN,由字符 XY 组成。

输入

输入以以下格式从标准输入给出:

NN SS TT

输出

打印能够成为结果字符串的公共子序列中字典序最小且最长的字符串。

示例一

3
XXX
YYY

示例一输出

XY
  • 如果不进行任何交换,XXXYYY 的唯一公共子序列是空字符串。
  • 如果交换第 11 个字符,YXXXYY 的公共子序列有空字符串、XY
  • 如果交换第 22 个字符,XYXYXY 的公共子序列有空字符串、XYXYYX
  • 如果交换第 33 个字符,XXYYYX 的公共子序列有空字符串、XY

进行两次或多次交换等价于将 SSTT 自身交换后进行一次交换。因此,能够成为公共子序列的最长字符串是 XYYX。其中字典序较小的 XY 是答案。

示例二

1
X
Y

示例二输出


答案可以是空字符串。

示例三

4
XXYX
YYYY

示例三输出

XYY

例如,只交换第 22 个字符后,XYY 将成为公共子序列。长度更长或字典序更小的字符串在任意交换组合后都不会成为公共子序列,因此 XYY 是答案。