小Hi和小Ho在玩一个数字游戏。
小Hi给出两个N位整数A和B(可能有前导0),小Ho需要经过最少次数的变换将A变成B。
一次变换可以进行以下操作之一:
1. 交换任意两位数字。例如 12345 -> 42315。
2. 选择任意一位数字加1或减1。注意0减1会变成9,9加1会变成0。
请你帮助小Ho求出最少的变换次数。
Input第一行包含一个整数N,代表位数。
第二行包含两个整数A和B。
对于50%的数据,1 ≤ N ≤ 6
对于100%的数据,1 ≤ N ≤ 10, A和B都是N位整数(可能有前导0)。
Output一个整数,代表最少的变换次数。
4 1234 4391Sample Output
5
这道题要用到全排列函数next_permutation,它的作用是自动生成一个全排列。
原序列为a,目标序列为b,那么我们可以知道因为二操作的存在,无论如何我们都能把a变成b,从而我们能得到最优解。
全排列函数使用的目的就是为了让a数组中的数字进行全排列实现所有的情况,然后我们通过所有的情况去对照目标数组b来找到最优解。虽然这种暴力的思想很简单,但是代码不好懂。并且实现第一个操作有个大问题,我们要交换数组中两个数,交换的前提是我们通过a与b的对比在目标数组中找到