CF1654F Minimal String Xoration

题目描述

给定一个整数 $n$ 和一个由 $2^n$ 个小写英文字母组成的字符串 $s$。字符串 $s$ 的字符依次为 $s_0s_1s_2\cdots s_{2^n-1}$。 如果存在一个整数 $j$($0\le j \leq 2^n-1$),使得对于每个 $0 \leq i \leq 2^n-1$,都有 $t_i = s_{i \oplus j}$(其中 $\oplus$ 表示[按位异或](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)运算),那么长度为 $2^n$ 的字符串 $t$(字符为 $t_0t_1t_2\cdots t_{2^n-1}$)称为 $s$ 的一次 xoration。 请你求出 $s$ 的字典序最小的 xoration。 如果字符串 $a$ 是字符串 $b$ 的前缀且 $a \ne b$,或者在第一个不同的位置,$a$ 的字母在字母表中比 $b$ 的对应字母更靠前,则称字符串 $a$ 的字典序小于字符串 $b$。

输入格式

第一行包含一个整数 $n$($1 \le n \le 18$)。 第二行包含一个由 $2^n$ 个小写英文字母组成的字符串 $s$。

输出格式

输出一行,表示 $s$ 的字典序最小的 xoration。

说明/提示

在第一个测试样例中,$s = $ "acba" 的字典序最小的 xoration $t$ 是 "abca"。这是一次 xoration,因为当 $j = 3$ 时: - $t_0 = s_{0 \oplus j} = s_3 = $ "a"; - $t_1 = s_{1 \oplus j} = s_2 = $ "b"; - $t_2 = s_{2 \oplus j} = s_1 = $ "c"; - $t_3 = s_{3 \oplus j} = s_0 = $ "a"。 不存在比 "abca" 字典序更小的 xoration。 在第二个测试样例中,最小的 xoration 对应于定义中 $j = 4$。 在第三个测试样例中,最小的 xoration 对应于定义中 $j = 11$。 在第四个测试样例中,最小的 xoration 对应于定义中 $j = 10$。 在第五个测试样例中,最小的 xoration 对应于定义中 $j = 0$ 或 $j = 1$。 由 ChatGPT 4.1 翻译