View Code of Problem 3919

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.


Back to problem 3919