var n,i,j,a: integer;
    niz: array[1..100,1..10] of char;
    niz2: array [1..100,1..10] of integer;
    niz3: array [1..100,1..2] of string;
    s: string;
begin
readln (n);
   for i:=1 to n do
     begin
        readln (s);
        for j:=1 to length(s) do
           niz[i,j]:=s[j];
     end;
for i:=2 to n do
   for j:= 1 to 10 do
      if (niz[i,j]<>niz[i-1,j]) then niz2[i,j]:=j;

for i:=2 to n do
   for j:=1 to 10 do
      if niz2[i,j]>0 then begin
                          niz3[i,1]:=niz[i-1,j];
                          niz3[i,2]:=niz[i,j];
                       break;
                       end;

a:=0;
for i:=1 to n do
   for j:=1 to n do
      if (niz3[i,1]=niz3[j,2]) and (niz3[i,2]=niz3[j,1]) and (i<>j) then begin
                                                                 if a=0 then writeln ('!');
                                                                 a:=1;
                                                              end;

if a=0 then writeln ('?');
end.

