I want to save my level progress in my quiz game

so this is my game, word quiz game. Every answer correct, it goes to next question. the problem is i have no idea how to save the progress of question so if i quit game or back to main menu, the question doesn’t back to question #1 again. pls help me. here are the code :

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;

public class QuizManager2 : MonoBehaviour
{
    public static QuizManager2 instance; //Instance to make is available in other scripts without reference

    [SerializeField] private GameObject gameComplete, MainMenu, GameMenu;
    [SerializeField] private Text currentQuestion;
    [SerializeField] private QuizDataScriptable2 QuizDataList;    //Scriptable data which store our questions data
    [SerializeField] private Image questionImage;           //image element to show the image
    [SerializeField] private WordData[] answerWordList;     //list of answers word in the game
    [SerializeField] private WordData[] optionsWordList;    //list of options word in the game
    

    public Text CurrentQuestion { get { return currentQuestion; } }
    

    private int scoreCount = 1;
    
    private GameStatus gameStatus = GameStatus.Playing;     //to keep track of game status
    private char[] wordsArray = new char[18];               //array which store char of each options

    private List<int> selectedWordsIndex;                   //list which keep track of option word index w.r.t answer word index
    private int currentAnswerIndex = 0, currentQuestionIndex = 0;   //index to keep track of current answer and current question
    private bool correctAnswer = true;                      //bool to decide if answer is correct or not
    private string answerWord;                              //string to store answer of current question

    private void Awake()
    {
        if (instance == null)
            instance = this;
        else
            Destroy(this.gameObject);
    }

    // Start is called before the first frame update
    void Start()
    {
        scoreCount = 1;
        

        selectedWordsIndex = new List<int>();           //create a new list at start
        SetQuestion();                                  //set question

    }
    
   

   

    void SetQuestion()
    {
        gameStatus = GameStatus.Playing;                //set GameStatus to playing 

        //set the answerWord string variable
        answerWord = QuizDataList.questions[currentQuestionIndex].answer;
        //set the image of question
        questionImage.sprite = QuizDataList.questions[currentQuestionIndex].questionImage;
            
        ResetQuestion();                               //reset the answers and options value to orignal     

        selectedWordsIndex.Clear();                     //clear the list for new question
        Array.Clear(wordsArray, 0, wordsArray.Length);  //clear the array

        //add the correct char to the wordsArray
        for (int i = 0; i < answerWord.Length; i++)
        {
            wordsArray _= char.ToUpper(answerWord*);*_

}

//add the dummy char to wordsArray
for (int j = answerWord.Length; j < wordsArray.Length; j++)
{
wordsArray[j] = (char)UnityEngine.Random.Range(65, 90);
}

wordsArray = ShuffleList2.ShuffleListItems(wordsArray.ToList()).ToArray(); //Randomly Shuffle the words array

//set the options words Text value
for (int k = 0; k < optionsWordList.Length; k++)
{
optionsWordList[k].SetWord(wordsArray[k]);
}

}

//Method called on Reset Button click and on new question
public void ResetQuestion()
{
//activate all the answerWordList gameobject and set their word to “_”
for (int i = 0; i < answerWordList.Length; i++)
{
answerWordList*.gameObject.SetActive(true);*
answerWordList*.SetWord('');*
}_

//Now deactivate the unwanted answerWordList gameobject (object more than answer string length)
for (int i = answerWord.Length; i < answerWordList.Length; i++)
{
answerWordList*.gameObject.SetActive(false);*
}

//activate all the optionsWordList objects
for (int i = 0; i < optionsWordList.Length; i++)
{
optionsWordList*.gameObject.SetActive(true);*
}

currentAnswerIndex = 0;
}

///


/// When we click on any options button this method is called
///

///
public void SelectedOption(WordData value)
{
//if gameStatus is next or currentAnswerIndex is more or equal to answerWord length
if (gameStatus == GameStatus.Next || currentAnswerIndex >= answerWord.Length) return;

selectedWordsIndex.Add(value.transform.GetSiblingIndex()); //add the child index to selectedWordsIndex list
value.gameObject.SetActive(false); //deactivate options object
answerWordList[currentAnswerIndex].SetWord(value.wordValue); //set the answer word list

currentAnswerIndex++; //increase currentAnswerIndex

//if currentAnswerIndex is equal to answerWord length
if (currentAnswerIndex == answerWord.Length)
{
correctAnswer = true; //default value
//loop through answerWordList
for (int i = 0; i < answerWord.Length; i++)
{
//if answerWord is not same as answerWordList*.wordValue*
if (char.ToUpper(answerWord_) != char.ToUpper(answerWordList*.wordValue))
{
correctAnswer = false; //set it false
break; //and break from the loop
}
}*_

//if correctAnswer is true
if (correctAnswer)
{

scoreCount += 50;
currentQuestion.text = “Score:” + scoreCount;
Debug.Log(“Correct Answer”);
gameStatus = GameStatus.Next; //set the game status
currentQuestionIndex++; //increase currentQuestionIndex

//if currentQuestionIndex is less that total available questions
if (currentQuestionIndex < QuizDataList.questions.Count)
{
Invoke(“SetQuestion”, 0.5f); //go to next question
}
else
{
Debug.Log(“Game Complete”); //else game is complete
gameComplete.SetActive(true);
}
}
}
}

public void ResetLastWord()
{
if (selectedWordsIndex.Count > 0)
{
int index = selectedWordsIndex[selectedWordsIndex.Count - 1];
optionsWordList[index].gameObject.SetActive(true);
selectedWordsIndex.RemoveAt(selectedWordsIndex.Count - 1);

currentAnswerIndex–;
answerWordList[currentAnswerIndex].SetWord(‘_’);
}
}

}

[System.Serializable]
public class QuestionData2
{
public Sprite questionImage;
public string answer;
}

public enum GameStatus
{
Next,
Playing
}

Pls help me (T_T)