import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Tribune { public static BufferedReader inp; public static void main(String[] args) throws IOException { inp = new BufferedReader (new InputStreamReader(System.in)); String input; String[] retazce; int n; char dobry, zly; while ((input = inp.readLine()) != null){ n = Integer.parseInt(input); retazce = new String[n]; for (int i = 0; i < n; i++) { retazce[i] = inp.readLine(); } // System.out.println(retazce[0]); if (zhoduju_sa(retazce[0],retazce[1])){ int i,j; for(i = 2; i < n; i++) { if (!zhoduju_sa(retazce[0],retazce[i])){ break; } } dobry = rozdiel_v(retazce[0], retazce[i]); zly = rozdiel_v_nesp(retazce[0], retazce[i]); for(j = 0; j < n; j++) { if (retazce[i].charAt(j) == zly) { break; } } i++;j++; System.out.println(i + " " + j + " " + dobry); } else if (zhoduju_sa(retazce[0],retazce[2])){ int i,j; // for(i = 2; i < n; i++) { // if (!zhoduju_sa(retazce[0],retazce[i])){ // break; // } // } dobry = rozdiel_v(retazce[0], retazce[1]); zly = rozdiel_v_nesp(retazce[0], retazce[1]); for(j = 0; j < n; j++) { if (retazce[1].charAt(j) == zly) { break; } } j++; System.out.println(2 + " " + j + " " + dobry); } else if (zhoduju_sa(retazce[1],retazce[2])){ int i,j; // for(i = 2; i < n; i++) { // if (!zhoduju_sa(retazce[0],retazce[i])){ // break; // } // } dobry = rozdiel_v(retazce[1], retazce[0]); zly = rozdiel_v_nesp(retazce[1], retazce[0]); for(j = 0; j < n; j++) { if (retazce[0].charAt(j) == zly) { break; } } j++; System.out.println(1 + " " + j + " " + dobry); } } } static boolean zhoduju_sa(String s1, String s2){ // if (s2 == "") { // return false; // } int rozmer = 26; int[] pole1 = new int[rozmer]; int[] pole2 = new int[rozmer]; for (int i = 0; i < rozmer; i++){ pole1[i] = 0; pole2[i] = 0; } int index; char znak = ' '; for(int i = 0; i < s1.length(); i++) { znak = s1.charAt(i); index = znak - 'A'; if (pole1[index] == 0) { pole1[index]++; } } for(int i = 0; i < s2.length(); i++) { // index = Integer.parseInt(s2.substring(i, i+1)); znak = s2.charAt(i); index = znak - 'A'; if (pole2[index] == 0) { pole2[index]++; } } for(int i = 0; i < rozmer; i++) { if (pole1[i] != pole2[i]) { return false; } } return true; } static char rozdiel_v(String s1, String s2){ int rozmer = 26; int[] pole1 = new int[rozmer]; int[] pole2 = new int[rozmer]; for (int i = 0; i < rozmer; i++){ pole1[i] = 0; pole2[i] = 0; } int index; char znak; for(int i = 0; i < s1.length(); i++) { // index = Integer.parseInt(s1.substring(i, i+1)); znak = s1.charAt(i); index = znak - 'A'; if (pole1[index] == 0) { pole1[index]++; } } for(int i = 0; i < s2.length(); i++) { // index = Integer.parseInt(s2.substring(i, i+1)); znak = s2.charAt(i); index = znak - 'A'; if (pole2[index] == 0) { pole2[index]++; } } for(int i = 0; i < rozmer; i++) { if ((pole1[i] != pole2[i]) && (pole1[i] == 1)) { return (char) (i + 'A'); } } return 'p'; } static char rozdiel_v_nesp(String s1, String s2){ int rozmer = 30; int[] pole1 = new int[rozmer]; int[] pole2 = new int[rozmer]; for (int i = 0; i < rozmer; i++){ pole1[i] = 0; pole2[i] = 0; } int index; char znak; for(int i = 0; i < s1.length(); i++) { // index = Integer.parseInt(s1.substring(i, i+1)); znak = s1.charAt(i); index = znak - 'A'; // System.out.println("pppp" + index+ "ap"); if (pole1[index] == 0) { pole1[index]++; } } for(int i = 0; i < s2.length(); i++) { // index = Integer.parseInt(s2.substring(i, i+1)); znak = s2.charAt(i); index = znak - 'A'; // System.out.println("pppp" + index + "pp"); if (pole2[index] == 0) { pole2[index]++; } } for(int i = 0; i < rozmer; i++) { if ((pole1[i] != pole2[i]) && (pole1[i] == 0)) { // System.out.println("bb" + (char) (i + 'A')); // return s2.charAt(i); return (char) (i + 'A'); } } return 'p'; } }