import java.io.*;
import java.util.*;
import java.lang.*;
import static java.lang.System.out;


public class declare {
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer pstk = new StringTokenizer("");
	
	static String pline;
	
	static List<String> v1;
	static List<String> v2;
	
	public static int index1;
	public static int index2;
	
	
	public static void main(String[] args)throws Exception
	{
		while(program());
	}
	
	public static boolean program() throws Exception {
	   v1 = new ArrayList<String>();
	   v2 = new ArrayList<String>();
	   int k = 0;
	   String temp;
	   do {
		temp = readToken();
		if(k==0 && temp.equals("."))
			return false;
		v1.add(temp);
		k++;
	   } while(!temp.equals("."));

	   do {
		temp = readToken();
		v2.add(temp);
	   } while(!temp.equals("."));

	   int fromA = 0;
	   int fromB = 0;
	   
	   while(true) {//////////////////////
	   int delka = 0;
	   while(!najdiMaxVzdalenots(delka, fromA, fromB)) {
	   	delka++;
	   }

	   
	   
	   while(fromA!=index1 && fromB!=index2) {
	   	if(v1.get(fromA).compareTo(v2.get(fromB)) > 0) {
	   		out.print(v2.get(fromB) + " ");
	   		fromB++;
	   	} else {
	   		out.print(v1.get(fromA) + " ");
	   		fromA++;
	   	}
	   }
	   while(fromA!=index1)
		   out.print(v1.get(fromA++) + " ");
	   while(fromB!=index2)
		   out.print(v2.get(fromB++) + " ");
	   
	   if(v1.get(index1).equals(".")) {
	   	out.println(".");
	   	return true;
	   	//konec;
	   }	   
	   out.print(v1.get(fromA) + " ");
	   fromA++;
	   fromB++;
	   if(fromA == v1.size() || fromB == v2.size())
	   	return true;
	   }//////////////////////////

	}
	
	public static boolean najdiMaxVzdalenots(int x, int fromA, int fromB) {
/*		for(int i = 0; i <= x; i++) {
			if(i >= v1.size() - fromA) {
				return false;
			}
			for(int j = 0; j <= x-i; j++) {
				if(j >= v2.size() - fromB)
					continue;
					
				if(v1.get(i+fromA).equals(v2.get(j+fromB))) {
					index1 = i+fromA;
					index2 = j+fromB;
					return true;
				}
			}
		}
		return false;*/
		int a = 0;
		int b = x;
		while(a <= b) {
			if(((v1.size() > (a+fromA)) && (v2.size() > (b+fromB)))) {
			//out.println(v1.size() + " " + (a+fromA));
			if(v1.get(a+fromA).equals(v2.get(b+fromB))) {
				index1 = a+fromA;
				index2 = b+fromB;
				return true;
			}}
			a++;
			b--;
		}
		return false;
	}
	
	public static int readInt() throws Exception
	{
		return Integer.parseInt(readToken());
	}

	public static String readToken() throws Exception
	{
		while (!pstk.hasMoreTokens()) pstk = new StringTokenizer(pline = br.readLine());
		return pstk.nextToken();
	}
}
