import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class grille
{
	public class ItemX implements Comparable
	{
		int x;
		int y;
		
		public ItemX(int xx, int yy)
		{
			x = xx;
			y = yy;
		}
		
		public int compareTo(Object bb)
		{
			ItemX b =(ItemX)bb;
			if(x < b.x)
			{
				return -1;
			} else if(x > b.x)
			{
				return 1;
			} else
			{
				if(y < b.y) return -1;
				else return 1;
			}
		}
	}
	public class ItemY implements Comparable
	{
		int x;
		int y;
		
		public ItemY(int xx, int yy)
		{
			x = yy;
			y = xx;
		}
		
		public int compareTo(Object bb)
		{
			ItemY b =(ItemY)bb;
			if(x < b.x)
			{
				return -1;
			} else if(x > b.x)
			{
				return 1;
			} else
			{
				if(y < b.y) return 1;
				else return -1;
			}
		}
	}
	
	
	public static void main(String[] args) throws Exception
	{
		grille g=new grille();
		g.run();
	}
	
	public void run() throws Exception
	{
		StringTokenizer st;
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		String line1;
		String line2;
		
		
		
		
		
		while(true)
		{
			ArrayList<ItemX> arx = new ArrayList<ItemX>();
			ArrayList<ItemY> ary = new ArrayList<ItemY>();
			line1 = br.readLine();
			if(line1.compareTo("0") == 0) break;
			int radku = Integer.parseInt(line1);
			for(int i = 0; i < radku; i++)
			{
				line2 = br.readLine();
				for(int j = 0; j < line2.length();j++)
				{
					if(line2.charAt(j) == 'O')
					{
						arx.add(new ItemX(i,j));
						ary.add(new ItemY(i,j));
					}
				}
			}
			String[] pole = new String[radku];
			for(int i = 0; i < radku; i++)
			{
				pole[i] = br.readLine();
			}
			
			for(int i = 0; i < arx.size(); i++)
			{
				ItemX it = arx.get(i);
				sb.append(pole[it.x].charAt(it.y));
			}
			
			Collections.sort(ary);
			
			for(int i = 0; i < ary.size(); i++)
			{
				ItemY it = ary.get(i);
				sb.append(pole[it.x].charAt(radku-1-it.y));
			}
			
			for(int i = arx.size()-1; i >= 0; i--)
			{
				ItemX it = arx.get(i);
				sb.append(pole[radku-1-it.x].charAt(radku-1-it.y));
			}
			for(int i = ary.size()-1; i >=0; i--)
			{
				ItemY it = ary.get(i);
				sb.append(pole[radku-1-it.x].charAt(it.y));
			}
			
			System.out.println(sb.toString().trim());
			sb = new StringBuilder();
			
			
		}
		
	}
}