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.