С помощью сортировки пузырьком можно получить любую перестановку цифр в обоих числах, меняя соседние. Это же верно и для итогового XOR, потому что если поменять соседние цифры на одинаковых позициях сразу в обоих числах, то они поменяются и в их $$$XOR$$$. Таким образом, получив какой-то $$$XOR$$$, мы всегда можем отсортировать в нём цифры по невозрастанию. Поэтому нам нужно получить как можно больше цифр $$$F$$$, дальше как можно больше $$$E$$$ и так далее.
Чтобы решить задачу для $$$n \leq 8$$$, можно просто перебрать все перестановки цифр в первом числе, посчитать $$$XOR$$$ со вторым, отсортировать в нём цифры невозрастанию и выбрать из таких $$$XOR$$$-ов наибольший.
Если $$$a$$$ состоит только из нулей, то ответом будут цифры $$$b$$$, расположенные по невозрастанию.
Можно заметить, что в тестах, где $$$a$$$ состоит только из цифр $$$0, 1, 2, 3$$$ и $$$b$$$ только из $$$0, 4, 8, C$$$, записи $$$a$$$ и $$$b$$$ никогда не пересекаются по битам, поэтому оптимально отсортировать цифры $$$a$$$ и $$$b$$$ по невозрастанию.
Для следующих решений предпосчитаем $$$da_i$$$ и $$$db_i$$$ – количество цифр со значением $$$i$$$ в $$$a$$$ и в $$$b$$$ соответственно.
Когда оба числа состоят только из цифр $$$0$$$ и $$$1$$$, нужно получить как можно больше единиц в итоговом $$$XOR$$$. Тогда в ответе будет префикс из $$$min(da_0, db_1) + min(da_1, db_0)$$$ единиц и суффикс из нулей.
Пусть в $$$a$$$ только цифры со значениями $$$w, v$$$ и в $$$b$$$ только со значениями $$$x, y$$$. Тогда можно перебрать $$$m$$$ – количество позиций, в которых стоят $$$w$$$ и $$$x$$$. После чего через $$$da_w, da_v, db_x, db_y$$$ и $$$m$$$ однозначно вычисляется количество позиций с $$$w$$$ и $$$y$$$, $$$v$$$ и $$$x$$$, $$$v$$$ и $$$y$$$. Тогда мы знаем, сколько цифр с каким значением в $$$XOR$$$ сейчас, и можем выбрать лучший из результатов для разных $$$m$$$, сравнивая количества цифр $$$F, E, \ldots 0$$$ в получающихся $$$XOR$$$-х.
Чтобы построить общее решение, будем перебирать цифры в результате от $$$F$$$ до $$$0$$$. Пусть мы уже рассмотрели все цифры больше $$$d$$$. Теперь нам нужно получить как можно больше цифр $$$d$$$, чтобы максимизировать ответ. Для этого переберем цифру $$$x$$$ в первом числе. Тогда $$$x\ \ XOR \ \ d$$$ — цифра из второго числа, дающая нужный $$$XOR$$$ в паре с $$$x$$$. Будем приписывать к ответу $$$d$$$, пока $$$da_x > 0$$$ и $$$db_{x \ \ XOR \ \ d} > 0$$$ и уменьшать $$$da_x$$$ и $$$db_{x \ \ XOR \ \ d} > 0$$$ на 1.