import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        while (cin.hasNextLine()) {
            String mw = cin.nextLine();
            String yw = cin.nextLine();
            String mb = cin.nextLine();
            System.out.println(getResult(mw, yw, mb));
            //cin.nextLine();
            System.out.println();
        }

    }

    public static String getResult(String mw, String yw, String mb) {
        if (mw.length() < 26) {
            return "Failed";
        }
        Map<String, String> map = new HashMap<String, String>();
        for (int i = 0; i < mw.length(); i++) {
            String mwChar = String.valueOf(mw.charAt(i));
            String ywChar = String.valueOf(yw.charAt(i));
            if (map.containsKey(mwChar)) {
                if (!ywChar.equals(map.get(mwChar))) {
                    return "Failed";
                }
            } else {
                if (map.containsValue(ywChar)) {
                    return "Failed";
                }
                map.put(mwChar, ywChar);
            }
        }
        if (map.size() < 26) {
            return "Failed";
        }
        StringBuffer result = new StringBuffer();
        for (int i = 0; i < mb.length(); i++) {
            String mbChar = String.valueOf(mb.charAt(i));
            result.append(map.get(mbChar));
        }
        return result.toString();
    }

}
/**************************************************************
	Problem: 2288
	User: admin
	Language: Java
	Result: Accepted
	Time:3736 ms
	Memory:40348 kb
****************************************************************/