
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Deque;
import java.util.HashMap;
import java.util.HashSet;



public class Template {
	
	

	public static void main(String[] args) throws IOException {

		//Scanner sc = new Scanner(System.in);
		FastReader sc = new FastReader(System.in);
		StringBuilder str = new StringBuilder();
		int t = sc.nextInt();
		while(t-- != 0) {
			int n = sc.nextInt();
			String s = sc.next();
			
			
			int cost = solve(s,0,n,'a');
			System.out.println(cost);
		}
	}

	private static int solve(String s, int l, int r, char c) {
		if((r-l) == 1)
			return (c == s.charAt(l)) ? 0:1;
		
		int a= r-l;
	    a/=2;
	    int cost1 = 0,cost2=0 ;
	    
	    int left = 0,right= 0;
	    for(int i = l ; i< l+a; i++){
	        
	        if(s.charAt(i) == c)left++;
	    }
	 
	    
	    for(int i = a+l ; i< r; i++){
	        
	        if(s.charAt(i) == c)right++;
	    }
	    cost1 += a-left;
	    char ch = (char)((int)c + 1); 
        cost1 += solve(s, l+a, r, ch); 
    
        cost2 += a - right;
        
        cost2 += solve(s, l , l+a , ch);
		
		
		return Math.min(cost2, cost1);
	}
}




class FastReader{
    	


        byte[] buf = new byte[2048];
        int index, total;
        InputStream in;

        FastReader(InputStream is) {
            in = is;
        }

        int scan() throws IOException {
            if (index >= total) {
                index = 0;
                total = in.read(buf);
                if (total <= 0) {
                    return -1;
                }
            }
            return buf[index++];
        }

        String next() throws IOException {
            int c;
            for (c = scan(); c <= 32; c = scan()) ;
            StringBuilder sb = new StringBuilder();
            for (; c > 32; c = scan()) {
                sb.append((char) c);
            }
            return sb.toString();
        }

        int nextInt() throws IOException {
            int c, val = 0;
            for (c = scan(); c <= 32; c = scan()) ;
            boolean neg = c == '-';
            if (c == '-' || c == '+') {
                c = scan();
            }
            for (; c >= '0' && c <= '9'; c = scan()) {
                val = (val << 3) + (val << 1) + (c & 15);
            }
            return neg ? -val : val;
        }

        long nextLong() throws IOException {
            int c;
            long val = 0;
            for (c = scan(); c <= 32; c = scan()) ;
            boolean neg = c == '-';
            if (c == '-' || c == '+') {
                c = scan();
            }
            for (; c >= '0' && c <= '9'; c = scan()) {
                val = (val << 3) + (val << 1) + (c & 15);
            }
            return neg ? -val : val;
        }

    	
    }






class Entry implements Comparable<Entry> {
    private int key;
    private int value;

    public Entry(int key, int value) {
        this.key = key;
        this.value = value;
    }

    

    public int first() {
		return key;
	}



	public void setFirst(int key) {
		this.key = key;
	}



	public int second() {
		return value;
	}



	public void setSecond(int value) {
		this.value = value;
	}



	@Override
    public int compareTo(Entry other) {
        if(this.key > other.key)
        	return 1;
        else if(this.key < other.key)
        	return -1;
        else {
        		return 0;
        }
        
    }



	public Entry add(int i, int j) {
		
		return new Entry(i, j);
	}
}

 class Pair<First, Second> {
    private First first;
    private Second second;

    public Pair(First first, Second second) {
        this.first = first;
        this.second = second;
    }

    public void setFirst(First first) {
        this.first = first;
    }

    public void setSecond(Second second) {
        this.second = second;
    }

    public First getFirst() {
        return first;
    }

    public Second getSecond() {
        return second;
    }

    public void set(First first, Second second) {
        setFirst(first);
        setSecond(second);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Pair pair = (Pair) o;

        if (first != null ? !first.equals(pair.first) : pair.first != null) return false;
        if (second != null ? !second.equals(pair.second) : pair.second != null) return false;

        return true;
    }

    
    
    @Override
    public int hashCode() {
        int result = first != null ? first.hashCode() : 0;
        result = 31 * result + (second != null ? second.hashCode() : 0);
        return result;
    }

    <L,R> Pair<L,R> add(L left, R right){
        return new Pair<L,R>(left, right);
    }
 }


	


 

