Listing OGOR.PAS
Program Ogor;
const maxn=50; maxm=50;
type tipogor=array[1..maxn,1..maxm]
of string[20];
var i,j,n,m,buc:Integer;
k,l,di,dj:Integer;
f:Text;
b:tipogor;
Procedure numaratoare(i,j:Integer;
var di,dj:Integer);
Function co_buna(i,j,di,
dj:Integer):Boolean;
var s:Integer;
begin
s:=i;
while (s<=di) and (b[i,j]=b[s,dj])
do s:=s+1;
co_buna:=s>di
end;
begin
di:=i; dj:=j;
while (di<n) and (b[di+1,j]=b[i,j])
do di:=di+1;
while (dj<m) and co_buna(i,j,di,dj+1)
do dj:=dj+1
end;
Begin
Assign(f,'TEREN.IN');
Reset(f);
Readln(f,n,m);
for i:=1 to n do
for j:=1 to m do
Readln(f,b[i,j]);
Close(f);
Assign(f,'TEREN.OUT');
Rewrite(f);
buc:=0;
for i:=1 to n do
for j:=1 to m do
if b[i,j]<>''
then
begin
buc:=buc+1;
numaratoare(i,j,di,dj);
for k:=i to di do
for l:=j to dj do
b[k,l]:=''
end;
Writeln(f,buc);
Close(f)
End.