{$R+}
type
	t = record
		s : string;
		i : longint;
	end;
	sett = set of char;
const
	set1 : sett = ['à','á','â','ã','ä','å','ç','è','é',
			'ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô'];
	set2 : sett = ['¸','æ','ö','û','ý','þ','ÿ','õ'];
	set3 : sett = ['÷','ø'];
	set4 : sett = ['ù'];
var
	i, n, j : longint;
	s : array[0..2000] of string;
	a : array[0..2000] of t;
function russian(s : string) : string;
var
  i : longint;
	ans : string;
begin
	ans := '';
	i := 1;
	while (i <= length(s)) do
	begin
		if (s[i] = 'a') then ans := ans + 'à';
		if (s[i] = 'b') then ans := ans + 'á';
		if (s[i] = 'v') then ans := ans + 'â';
		if (s[i] = 'g') then ans := ans + 'ã';
		if (s[i] = 'd') then ans := ans + 'ä';
		if (s[i] = 'e') then ans := ans + 'å';
		if (s[i] = 'i') then ans := ans + 'è';
		if (s[i] = 'j') then ans := ans + 'é';
		
		if (s[i] = 'l') then ans := ans + 'ë';
		if (s[i] = 'm') then ans := ans + 'ì';
		if (s[i] = 'n') then ans := ans + 'í';
		if (s[i] = 'o') then ans := ans + 'î';
		if (s[i] = 'p') then ans := ans + 'ï';
		if (s[i] = 'r') then ans := ans + 'ð';
		if (s[i] = 'u') then ans := ans + 'ó';
		if (s[i] = 'f') then ans := ans + 'ô';
		if (s[i] = 'z') then
		begin
			if (i = length(s)) then ans := ans + 'ç'
			else if (s[i + 1]) = 'h' then ans := ans + 'æ' 
						 else ans := ans + 'ç';
							
		end;
		if (s[i] = 'k') then
		begin
			if (i = length(s)) then ans := ans + 'ê'
			else if (s[i + 1]) = 'h' then ans := ans + 'õ' 
						 else ans := ans + 'ê';
							
		end;

		if (s[i] = 'y') then
		begin
			assert(i <> length(s));
			if (s[i + 1] = 'o') then ans := ans + '¸';
			if (s[i + 1] = 'y') then ans := ans + 'û';
			if (s[i + 1] = 'e') then ans := ans + 'ý';
			if (s[i + 1] = 'u') then ans := ans + 'þ';
			if (s[i + 1] = 'a') then ans := ans + 'ÿ';
		end;
		if (s[i] = 't') then
		begin
			if (i = length(s)) then ans := ans + 'ò' else
			if (s[i + 1] <> 'c') then ans := ans + 'ò' else
			if (i + 1 = length(s)) then ans := ans + 'ö' else
			if (s[i + 2] <> 'h') then ans := ans + 'ö' else
			ans := ans + '÷';
		end;
		if (s[i] = 's') then 
		begin	
			if (i = length(s)) then ans := ans + 'ñ' else
			if (s[i + 1] <> 'c') then ans := ans + 'ñ' else
			begin
				assert(i + 1 <> length(s));
				if (s[i + 2] = 'h') then ans := ans + 'ø' else
				begin
					assert(i + 2 <> length(s));
					assert(s[i + 2] = 's');
					assert(s[i + 3] = 'h');
					ans := ans + 'ù';
				end;
			end;
		end;		



		if (ans[length(ans)] in set1) then i := i + 1 else
		if (ans[length(ans)] in set2) then i := i + 2 else
		if (ans[length(ans)] in set3) then i := i + 3 else
		if (ans[length(ans)] in set4) then i := i + 4 else assert(false);
	end;
	russian := ans;
end;

procedure sort(l,r:longint);
var
	i, j :longint;
	x : string;
	y : t;
begin
	i := l;
	j := r;
	x := a[(l + r) div 2].s;
  	repeat
		while (a[i].s < x) do inc(i);	
		while (a[j].s > x) do dec(j);
     		if i<=j then 
		begin
			y := a[i];		
			a[i] := a[j];		
			a[j] := y;
			inc(i);
			dec(j);
    		end;
  	until i > j;
	if i < r then sort(i,r);
	if j > l then sort(l,j);
end;

begin
	reset(input, 'conspiracy.in');
	rewrite(output, 'conspiracy.out');
	readln(n);
	assert((1 <= n) and (n <= 1000));
	for i := 1 to n do
	begin
		readln(s[i]);
		assert((1 <= length(s[i])) and (length(s[i]) <= 50));
		for j := 1 to length(s[i]) do
		  assert((ord(s[i][j]) >= ord('a')) and (ord(s[i][j]) <= ord('z')));
		a[i].s := russian(s[i]);
		a[i].i := i;
	end;
	sort(1, n);
	for i := 1 to n - 1 do
		if a[i].s = a[i + 1].s then assert(false, a[i].s); //Ïîìåíÿòü randomseed
	//writeln(a[1].s);
	writeln(a[1].i);
end.
	                       