A string s of length n, consisting of lowercase letters of the English alphabet, is given.

You must choose some number k between 0 and n. Then, you select k characters of s and permute them however you want. In this process, the positions of the other n-k characters remain unchanged. You have to perform this operation exactly once.

For example, if s="andrea", you can choose the k=4 characters "a_d_ea" and permute them into "d_e_aa" so that after the operation the string becomes "dneraa".

Determine the minimum k so that it is possible to sort s alphabetically (that is, after the operation its characters appear in alphabetical order).

Input

The first line contains a single integer t (1 ≤ t ≤ 1000) — the number of test cases. Then t test cases follow.

The first line of each test case contains one integer n (1 ≤ n ≤ 40) — the length of the string.

The second line of each test case contains the string s. It is guaranteed that s contains only lowercase letters of the English alphabet.

Output

For each test case, output the minimum k that allows you to obtain a string sorted alphabetically, through the operation described above.

Example

Input


4
3
lol
10
codeforces
5
aaaaa
4
dcba


Output


2
6
0
4

Note

In the first test case, we can choose the k=2 characters "_ol" and rearrange them as "_lo" (so the resulting string is "llo"). It is not possible to sort the string choosing strictly less than 2 characters.

In the second test case, one possible way to sort s is to consider the k=6 characters "_o__force_" and rearrange them as "_c__efoor_" (so the resulting string is "ccdeefoors"). One can show that it is not possible to sort the string choosing strictly less than 6 characters.

In the third test case, string s is already sorted (so we can choose k=0 characters).

In the fourth test case, we can choose all k=4 characters "dcba" and reverse the whole string (so the resulting string is "abcd").
import static java.lang.Math.max;
import static java.lang.Math.min;
import static java.lang.Math.abs;
import static java.lang.System.out;
import java.util.* ;
import java.math.*;
import java.io.*;


 public class javaTemplate {
	
	public static final int M = 1000000007 ;
	static FastReader sc = new FastReader();
	static int N = 86028121 ;
	static boolean globB[] = new boolean[N+1] ;
	static int globA[] = new int[10000000] ;
	
	
	public static void main(String[] args) {
		
	int q = sc.nextInt() ;
		
		while(q -- != 0) {
			int n = sc.nextInt() ;
			String s = sc.next() ;
			char tempArray[] = s.toCharArray();
	        Arrays.sort(tempArray);
	         int c = 0 ;
	        for(int i = 0 ; i< n ; i++) {
	        	if(tempArray[i] != s.charAt(i)) c ++ ;
	        }
	        
	        System.out.println(c);
	        
	        
		}

	}


	/*
	 @ Observation is imp. for problem A and B
	 1->> Read the problem properly take time to read the problem 
	 if it is too lengthy.
	 2->> Draw the test cases of A and B 
	 3->> Don't over think the problem 
	 4->> Try to take sum variable as long
	 5->> Avoid Nested if else statement
	 6->> If it looks like a Greedy problem try to figure out the ans. 
	 for the smallest test case.
	 7->> If it is a binary String check no. of 0's and 1's. 
	 If it is a even try to pair it (may be not applicable for every questions).
	 8->> Always check the constrains and try BruteForce
	 @ Implement it quickly 
	 */
	

	
	
			
	
	
	
	


	
	
//_________________________//Template//_____________________________________________________________________
	
	
		//		FAST I/O
		static class FastReader {
	        BufferedReader br;
	        StringTokenizer st;
	        
	        public FastReader()
	        {
	            br = new BufferedReader(
	                new InputStreamReader(System.in));
	        }
	 
	        String next()
	        {
	            while (st == null || !st.hasMoreElements()) {
	                try {
	                    st = new StringTokenizer(br.readLine());
	                }
	                catch (IOException e) {
	                    e.printStackTrace();
	                }
	            }
	            return st.nextToken();
	        }
	 
	        int nextInt() { return Integer.parseInt(next()); }
	 
	        long nextLong() { return Long.parseLong(next()); }
	 
	        double nextDouble()
	        {
	            return Double.parseDouble(next());
	        }
	 
	        String nextLine()
	        {
	            String str = "";
	            try {
	                str = br.readLine();
	            }
	            catch (IOException e) {
	                e.printStackTrace();
	            }
	            return str;
	        }
		}
	
	
		
		
		
		// Sorting
		public static void sort(int[] arr) {
	        //because Arrays.sort() uses quicksort which is dumb
	        //Collections.sort() uses merge sort
	        ArrayList<Integer> ls = new ArrayList<Integer>();
	        for(int x: arr)
	            ls.add(x);
	        Collections.sort(ls);
	        for(int i=0; i < arr.length; i++)
	            arr[i] = ls.get(i);
	    }
		
		
		
		
		
		// Modulo
		static int mod(int a) {
		   return (a%M + M) % M;
		}
		
		
		
		
		
		
		
		//		Palindrom or Not
		static boolean isPalindrome(String str, int low, int high) {
					while (low < high) {
						if (str.charAt(low) != str.charAt(high)) return false;
					 	low++;
					 	high--;
					}
					return true;
				}
	
	

	
	
	
	
	
	
	
	
		// check if sorted or not	
		public static boolean isSorted(int[] a)
	    {
	        for (int i = 0; i < a.length - 1; i++)
	        {
	            if (a[i] > a[i + 1]) {
	                return false;
	            }
	        }
	        return true;
	    }
	
	
	
		
		
	
		// GCD
		public static int GCD(int a , int b) {
				if(b == 0) return a ;
				
				return GCD(b, a%b) ;
			}
	
		
		
		
		
		// sieve
		public static void sieve() {
			Arrays.fill(globB, true);
			globB[0] = false ;
			globB[1] = false ;
			for(int i = 2 ; i * i <= N ; i++) {
				if(globB[i]) {
				for(int j = i * i ; j<= N ; j+= i) {
					globB[j] = false ;
				 }
				}
			}
			
		}

		
		
		
		// fastPower
		public static long fastPowerModulo(long a, long b, long n) {
			long res = 1 ;
			while(b > 0) {
			if((b&1) != 0) {
				res = (res * a % n) % n ;
			}
			a = (a % n * a % n) % n ;
			b = b >> 1 ;
			}
			return res ;
		}
	
		
		
        // LCM
		static int LCM(int a, int b)
	    {
	        return (a / GCD(a, b)) * b;
	    }
		

}


 
 
 
 
 
 
