import java.io.*;

public class Word_Find
{
    static int high;
    static char[] [] [] cell = new char [2] [5] [5];

    public static void main (String[] args) throws IOException
    {
	int i, j, k;
	String input;
	BufferedReader br = new BufferedReader (new FileReader ("DATA41.txt"));
	boolean[] [] [] moveable = new boolean [2] [5] [5];
	for (i = 0 ; i < cell.length ; i++)
	    for (j = 0 ; j < cell [i].length ; j++)
	    {
		input = br.readLine ();
		for (k = 0 ; k < cell [i] [j].length ; k++)
		{
		    cell [i] [j] [k] = input.charAt (k);
		    moveable [i] [j] [k] = true;
		}
	    }
	String[] word = new String [5];
	for (i = 0 ; i < word.length ; i++)
	    word [i] = br.readLine ();
	for (i = 0 ; i < word.length ; i++)
	{
	    high = 0;
	    for (j = 0 ; j < cell.length ; j++)
		for (k = 0 ; k < cell [j].length ; k++)
		    for (int l = 0 ; l < cell [j] [k].length ; l++)
			if (cell [j] [k] [l] == word [i].charAt (0))
			    recursion (j, k, l, j + k + l + 3, word [i], 1, cloneOf (moveable));
	    System.out.println (high);
	}
    }


    static void recursion (int a, int b, int c, int sum, String word, int letter, boolean[] [] [] moveable)
    {
	// System.out.println (letter + ": " + a + " " + b + " " + c); // Debug
	if (letter == word.length ())
	{
	    System.out.println (word + " " + sum); // Debug
	    if (sum > high)
		high = sum;
	}
	else
	{
	    moveable [a] [b] [c] = false;
	    int i;
	    if (a == 0)
	    {
		if (moveable [1] [b] [c] && cell [1] [b] [c] == word.charAt (letter)) // Back
		    recursion (1, b, c, sum + 4 + b + c, word, letter + 1, cloneOf (moveable));
	    }
	    else
		if (moveable [0] [b] [c] && cell [0] [b] [c] == word.charAt (letter)) // Front
		    recursion (0, b, c, sum + 3 + b + c, word, letter + 1, cloneOf (moveable));
	    for (i = 0 ; i < cell [0].length ; i++)
		if (moveable [a] [i] [c] && cell [a] [i] [c] == word.charAt (letter))
		    recursion (a, i, c, sum + a + i + c + 3, word, letter + 1, cloneOf (moveable));
	    for (i = 0 ; i < cell [0] [0].length ; i++)
		if (moveable [a] [b] [i] && cell [a] [b] [i] == word.charAt (letter))
		    recursion (a, b, i, sum + a + b + i + 3, word, letter + 1, cloneOf (moveable));
	}
    }


    static boolean[] [] [] cloneOf (boolean[] [] [] array)
    {
	boolean[] [] [] newArray = new boolean [2] [5] [5];
	for (int i = 0 ; i < array.length ; i++)
	    for (int j = 0 ; j < array [i].length ; j++)
		for (int k = 0 ; k < array [i] [j].length ; k++)
		    newArray [i] [j] [k] = array [i] [j] [k];
	return newArray;
    }
}


