Вложенный цикл по гриду.
Для каждой ячейки выясняем последнюю цифру и если совпадает, то к значению приделываем спереди и сзади доп. цифирки.
Код:
function AddDigit(ADigit : Integer; AValue : String) : String;
begin
Result := AValue;
Try
If Length(AValue) > 0 Then
If StrToInt(AValue[Length(AValue)) = ADigit Then
Result := IntToStr(ADigit) + AValue + IntToStr(ADigit);
Except
End;
end;
Цикл с заменой напишешь сам.