import java.util.*; public class Main { public static void main(String[] args) { Scanner in =new Scanner(System.in); int t =in.nextInt(); for(int i =0;i<t;i++) { int m =in.nextInt(); int n =in.nextInt(); StringBuffer password = new StringBuffer(in.next()); StringBuffer[] alr = allrank(m); int min = Integer.MAX_VALUE; for(StringBuffer s:alr) { int lastloc = s.indexOf(String.valueOf(password.charAt(0)-97)); int len=0; for(int j=1;j<n;j++) { String pw = String.valueOf(password.charAt(j)-97); int nowloc = s.indexOf(pw); len+=Math.abs((nowloc-lastloc)); lastloc=nowloc; } if(min>len) { min=len; } } System.out.println(min); } } public static int jiecheng(int n ) { int s =1; for(int i =n;i>0;i--) { s*=i; } return s; } public static StringBuffer[] allrank(int n ) { StringBuffer[] s = new StringBuffer[jiecheng(n)]; if(n==1) { s[0]=new StringBuffer("0"); return s; }else { int count=0; StringBuffer[] tinys = allrank(n-1); for(StringBuffer sb:tinys) { for(int i =0;i<=n-1;i++) { sb.insert(i, (n-1)+""); s[count++]=new StringBuffer(sb.toString()); sb.deleteCharAt(i); } } return s; } } } |
Double click to view unformatted code.