![]()
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class VjudgeTPOJ1080 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int T = Integer.parseInt(st.nextToken());
int[][] score = {
{0,0, 0, 0, 0, 0},
{0,5,-1,-2,-1,-3},
{0,-1,5,-3,-2,-4},
{0,-2,-3,5,-2,-2},
{0,-1,-2,-2,5,-1},
{0,-3,-4,-2,-1,0}
};
for (int t = 0; t < T; t++) {
st = new StringTokenizer(br.readLine());
int len1 = Integer.parseInt(st.nextToken());
char[] chars1 = st.nextToken().toCharArray();
st = new StringTokenizer(br.readLine());
int len2 = Integer.parseInt(st.nextToken());
char[] chars2 = st.nextToken().toCharArray();
int[][] dp = new int[len1+1][len2+1];
for (int i = 1; i <= len1; i++) {
char c = chars1[i-1];
dp[i][0] = dp[i-1][0] + score[switchNum(c)][5];
}
for (int i = 1; i <= len2; i++) {
char c = chars2[i-1];
dp[0][i] = dp[0][i-1] + score[5][switchNum(c)];
}
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
int tem = dp[i-1][j] + score[switchNum(chars1[i-1])][5];
tem = Math.max(dp[i][j-1] + score[5][switchNum(chars2[j-1])], tem);
tem = Math.max(dp[i-1][j-1] + score[switchNum(chars1[i-1])][switchNum(chars2[j-1])], tem);
dp[i][j] = tem;
}
}
System.out.println(dp[len1][len2]);
}
}
private static int switchNum(char c) {
int ret = 0;
switch (c) {
case 'A': ret = 1; break;
case 'C': ret = 2; break;
case 'G': ret = 3; break;
case 'T': ret = 4; break;
}
return ret;
}
}