Coded Correspondence - Hard?

Hey guys I was struggling for a good 2 - 3 weeks to solve this exercise longest i spend on an exercise , current exc specifically the last one was Vigenere cipher

I wouldn’t be able to solve it if it weren’t for GPT3 altho gpt itself keeps giving me inadequate answers for this task, i tried my best to solve it by myself and asking basic questions in the end this is my final output

message = "txm srom vkda gl lzlgzr qpdb? fepb ejac! ubr imn tapludwy mhfbz cza ruxzal wg zztcgcexxch!"
keyword = "friends"
keywordphrase = ""
keyword_index = 0
alpha = "abcdefghijklmnopqrstuvwxyz"
decoded = ""
message_index = 0
#get indices of characters ie. t=0 x=1...
while len(decoded) < len(message):
    letter = message[message_index]
    letter2 = keyword[keyword_index]
    message_index = (message_index + 1) % len(message)
  #index letters to corresponding alphabete
    if letter in alpha:
        letter_index = alpha.index(letter)
        letter2_index = alpha.index(letter2)

        # Calculate the backward shift value for the Vigenere cipher
        shift = (letter_index + letter2_index) % 26


        # Apply the backward shift to the character in the message and add it to the decoded message
        decoded += alpha[shift]

        # Move to the next character in the message and keyword
        keyword_index = (keyword_index + 1) % len(keyword)
# if space or non alphabete revert to original  letter
        decoded  += letter

i had a hard time also figuring out that i was supposed to put message_index = (message_index + 1) % len(message) in my while loop instead of putting in inside the if loop as it was only outputting “you”

Since i had a hard time, actually solving it , i’m thinking of learning the solution by heart, so whenever i need to decipher something i use this way until i understand everything comfortably… i guess with more exercises , is that ok? do i really need to be able to solve this task all by myself without any help at this stage?

did you struggle too? if so what helped you?
I just don’t know if i have to start again everything from the beginning or just continue my python course

update i noticed the solution was different than my code, after analysing it , i do understand the process used but got a hard time solving it myself without some hints. As solving these problems requires you to think differently