const
  len1 = 13;
  len2 = 9;
  A :string = 'Super Ruez';
  B :string = 'dprtupzz';
var
 i,j:byte;
 V : array[0..len2,0..len1] of byte;
 ret : string;
begin

  Fillchar(V,len1*len2+2,0);
  V[1,1] := 0;
  if a[1]=b[1] then v[1,1]:=1;
  for i:=2 to len2 do if ((v[i-1,1]=1) or (a[1]=b[i])) then v[i,1] := 1
      else v[i,1]:=0;
  for j:=2 to len1 do if ((v[1,j-1]=1) or (a[j]=b[1])) then v[1,j] := 1
      else v[1,j]:=0;
  for i:=2 to len2 do
    for j:= 2 to len1 do
     begin
       if (a[j]=b[i]) then v[i,j];
       if v[i-1,j] > v[i,j-1] then v[i,j] := v[i-1,j]
        else v[i,j] := v[i,j-1];
     end;

  while v[i,j] <> 0 do
   begin
     if (v[i-1,j] = v[i,j]-1) and (v[i,j-1]=v[i,j]-1) then insert(a[j],ret,1);
     if v[i-1,j] > v[i,j-1] then dec(i) else dec(j);
   end;
   WriteLn('Max substring: ',ret);
end.



