var P:array[0..6] of string;
n,m,i:word;
tam,s,nho,PW,s1:string;
duyetP:array[0..6] of boolean;
f1,f2:text;
procedure taoxauP;
begin
P[1]:=s[1]+copy(s1,2,m-1);
P[2]:=s1[1]+copy(s,2,m-1);
P[3]:=copy(s,1,m-1)+s1[m];
P[4]:=copy(s1,1,m-1)+s[m];
P[5]:=s;
P[6]:=s1;
end;
function kt(st:string):boolean;
var j:byte;
begin
for j:=1 to 6 do
if (copy(P[j],1,m-1)<>copy(st,1,m-1)) and (copy(P[j],2,m-1)<>copy(st,2,m-1)) then duyetP[j]:=false;
exit(true);
end;
begin
assign(f1,'PW.INP');reset(f1);
assign(f2,'PW.OUT');rewrite(f2);
readln(f1,n,m);
fillchar(duyetP,sizeof(duyetP),true);
PW:=' ';
if n>=1 then
begin
readln(f1,s);
PW:=s;
end;
if n>=2 then
begin
readln(f1,s1);
taoxauP;
kt(s);
kt(s1);
end;
if n>=3 then
begin
for i:=3 to n do
begin
readln(f1,s);
kt(s);
end;
end;
if n>=2 then
begin
for i:=1 to 6 do
if duyetP[i]=true then
begin
PW:=P[i];
break;
end
else PW:=' ';
end;
if PW=' ' then writeln(f2,'-1')
else writeln(f2,PW);
close(f1);close(f2);
end.