Jump back on error in progress list

I am a developer of a mobile app and have no particular proficiency in UX. In my app there is a use case where the user has to wait and the progress is shown in a list with an indicator icon [check mark (done), spinning circle (in progress), empty circle(to do), cross (error)] like this:

(✔) first step is done

(✳) second step in progress

( ) third step to do

( ) fourth step to do

Each of the steps might fail but most errors are recoverable so each step is retried several times. Now I have the problem that a failing of step 3 requires me to re-execute step 2 as well. (In my particular case step 2 is calculating the encrypted payload of a challenge response procedure and step 3 is the transmission of the actual data. If the transmission fails, I have to re-encrypt the data with the new challenge)

This means that the progress list jumps back a step.

What would be a good way to signal to the user what is going on? Are there alternatives to jumping back?

Edit: more context

From the comments I guess a little more context might be beneficial to answer my particular problem. My use case is a NFC communication event with an embedded system consisting of several steps. During each step, the mobile phone has to be placed exactly onto the NFC tag (The NFC antenna and thus the connection quality varies significantly for different smartphones).

In step 2, the challenge of the challenge response procedure is read. In step 3, the data (containing the response to the challenge) is written to the NFC tag.

Usually, it is not particularly relevant to the user if a reading error occurs and I can silently retry executing that step. However, for step 3, if the writing fails then the embedded system will generate a new challenge, so I have to proceed with reading the challenge (step 2) and re-encrypting the data before writing it to the tag again.

Possible solutions

I see the following scenarios, but none of them feels particularly appealing to me:

Scenario 1:

I jump back, cross the third step, and spin the progress circle of the second step. Once the second step has successfully completed, the cross in the third step becomes a spinning circle again.

Scenario 2:

I extend the progress list with two more steps inserted after the third step. An obvious disadvantage is that with up to 5 retries the list could end up with 12 progress items -> which will not fit onto the screen

Scenario 3:

Somewhat like scenario 1 but instead of the cross icon usually used for errors I use the empty circle. The problem I see here is that the user does not get any feedback that an error occurred and the progress bar jumps back without an apparent reason