Как собрать буквы по порядку в слово?
Назначаете элементам с буквами data-атрибут, значение которого будет обозначать позицию буквы в слове:

<p data-letter="2">П</p>
<p data-letter="0">Ж</p>
<p data-letter="3">А</p>
<p data-letter="1">О</p>
Собираете слово:

const word = Array
  .from(document.querySelectorAll('[data-letter]'))
  .sort((a, b) => a.dataset.letter - b.dataset.letter)
  .map(n => n.innerText)
  .join('');

// или

const word = Array
  .from(document.querySelectorAll('[data-letter]'))
  .reduce((acc, n) => (acc[n.dataset.letter] = n.innerText, acc), [])
  .join('');
В коде страницы слово пусть будет массивом кодов его символов. Тогда останется собрать по клику:snippet
Или, может, удобнее, прямо в HTML разметке в data-атрибуте держать скрытое слово задом наперёд и по таймайту обновлять.