import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; import java.util.stream.Collectors; /** * Created by tym12 on 10/22/16. */ public class Tribune { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // write your code here BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); String nrS; try { do { ArrayList gr = new ArrayList<>(); ArrayList chars = new ArrayList<>(); nrS= bufferedReader.readLine(); int n = Integer.parseInt(nrS); char wrong; for (int i= 0; i < n; i++) { String l = bufferedReader.readLine(); gr.add(l); char[] line = l.toCharArray(); Arrays.sort(line); chars.add(line); //System.out.println(line); //System.out.println(l); } //int bad = -1; char bad = 0; char bad2 = 0; for (int i = 1; i < n; i ++) { if (!chars.get(i).equals(chars.get(i-1))) { Set s = uniques(gr.get(i),gr.get(i-1)); Set s2 = uniques(gr.get(i-1),gr.get(i)); for (char c :s) { bad = c; break; } for (char c :s2) { bad2 = c; break; } } } int b1 = 0; int b2 = 0; char realyBad = 0; int badRow = 0; for (int i = 0; i < n; i++) { if (gr.get(i).contains(""+bad)) b1++; if (gr.get(i).contains(""+bad2)) b2++; if (b1 > 1) { realyBad = bad2; break; } if (b2 > 1) { realyBad = bad; break; } } for (int i = 0; i < n; i++) { int index = gr.get(i).indexOf(realyBad); if (index != -1) { char correct = 0; Set g = uniques(new String(chars.get(0)),gr.get(i)); for (char c : g) { System.out.println((i+1)+" "+(index+1)+" "+c); break; } break; }/* continue; for (int j = 0; j 1 || nr == 0) { if (index==-1) index = 0; correct = chars.get(i)[j]; System.out.println((bad+1)+" "+(index+1)+" "+correct); break; }*/ } /* break; }*/ // System.out.println(); } while(nrS != null); } catch (Exception e) { // } } private static Set uniques(String first, String second) { Set a = first.chars().mapToObj(c -> (char) c).collect(Collectors.toSet()); Set b = second.chars().mapToObj(c -> (char) c).collect(Collectors.toSet()); a.removeAll(b); return a; } }