printРешение

Тема: работа со строками
Сложность: ниже среднего

Проходим по строке, если встречается гласная, и это не первая гласная в слове, проверяем, какая буква стоит перед ней (так как это не первая гласная, то какая-то буква перед ней точно есть). Если согласная, но не 'h', то вставляем перед ней '-'. Если буква 'h' – смотрим предыдущую букву (аналогично, так как это не первая гласная, перед 'h' должна быть ещё буква), в случае гласной вставляем '-' перед 'h', в случае согласной – перед предыдущей буквой. При вставке символа '-' для перехода к следующей букве увеличиваем индекс `i` не на 1, а на 2.
var s:string;
  i,n:integer;
begin
  readln(s);
  i:=1;
  n:=0;
  while i<=length(s) do
  begin
    if pos(s[i],'aeiou')>0 then
    begin
      inc(n);
      if n>1 then
      begin
        if s[i-1]='h' then
        begin
          if pos(s[i-2],'aeiou')>0 then
            insert('-',s,i-1)
          else
            insert('-',s,i-2);
          inc(i);
        end
        else if pos(s[i-1],'aeiou')=0 then
        begin
          insert('-',s,i-1);
          inc(i);
        end;
      end;
    end;
    inc(i);
  end;
  writeln(s);
end.
loading