Вопрос, который вызвал трудности

В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч» и «О».
Нужно вывести на экран все возможные слова, состоящие из K букв,
в которых есть по крайней мере две одинаковые буквы,
не обязательно стоящие рядом. Программа не должна строить другие слова,
не соответствующие условию.

Ответ экспертов Учись.Ru

Чтобы дать полноценный ответ, был привлечён специалист, который хорошо разбирается в теме.

После обсуждения с другими специалистами сервиса мы пришли к выводу, что правильный ответ на ваш вопрос будет звучать следующим образом:

Const
  ab = 'ышчо'; //алфавит племени
var
  vort: string;
  j, k, raz: integer;
  per: boolean;//признак переноса разряда

//проверка наличия совпадающих букв в слове
function kond(var vort: string): boolean;
var
  n: integer;
begin
  result := false;
  n := length(vort);
  for var i := 1 to n - 1 do
    for var j := i + 1 to n do
      if vort[j] = vort[i] then
      begin
        result := true;
        exit;
      end;
end;

begin
  writeln('Введите k');
  readln(k);
  for var i := 1 to k do
    vort := vort + ab[1];
  raz := k;
  per := false;
  while raz > 0 do
    if per then
    begin
      while vort[raz] = ab[4] do
      begin
        vort[raz] := ab[1];
        raz := raz - 1;
        if raz < 1 then exit;
      end;
      j := pos(vort[raz], ab) + 1;
      vort[raz] := ab[j];
      per := false;
      raz := k;
    end
      else
    begin
      if kond(vort) then writeln(vort);
      j := pos(vort[k], ab) + 1;
      if j > 4 then
        per := true
      else
        vort[k] := ab[j];
    end;
end.