text: import math
  from tkinter import *
  #Constants
  PINK = "#e2979c"
  RED = "#e7305b"
  GREEN = "#9bdeac"
  YELLOW = "#f7f5dd"
  FONT_NAME = "Courier"
  WORK_MIN = 25
  SHORT_BREAK_MIN = 5
  LONG_BREAK_MIN = 20
  reps = 0
  timer = None
  
  def reset_timer():                                  #timer reset    
      window.after_cancel(timer)                      #canceling the counter used for counting seconds in the countdown method
      canvas.itemconfig(timer_text, text="00:00")     
      title_label.config(text= "Timer")               #changing properties of each object and reset reps == 0 
      check_marks.config(text="")
      global reps
      reps = 0
   
  def start_timer():      #timer mechanism
      global reps         #reps shows how much already breaks was
      reps += 1
  
      count_down(5*60)        #always starts with the same value 5 * 60, then changes to long or short breaks
      work_sec = WORK_MIN* 60 #
      short_break_sec = SHORT_BREAK_MIN* 60
      long_break_sec = LONG_BREAK_MIN* 60
  
      count_down(work_sec)                        #starting the timer with long or short periods depends on reps value
      if reps % 8 == 0:                           
          count_down(long_break_sec)
          title_label.config(text="Break", fg=RED)        
      elif reps % 2 == 0:
          count_down(short_break_sec)
          title_label.config(text="Break", fg=PINK)
      else:
          count_down(work_sec)
          title_label.config(text="Work", fg=GREEN)
  
  def count_down(count):          #countdown mechanism
  
      count_min = math.floor(count/60)            #math.floor returns number rounded up   
      count_sec = count% 60                       #preparing the correct values ​​to be displayed in the timer
      if count_sec == 0:
          count_sec = f"0{count_sec}"
      canvas.itemconfig(timer_text, text=f"{count_min}:{count_sec}")      #displaying minutes and seconds 
      if count > 0:
          global timer
          timer = window.after(1000,count_down, count-1)          #method calling itself > recursion 
      else:                                                       #window method, after(1000ms, call count_down, substract "1" from counter)
          start_timer()
          mark=""
          work_sessions = math.floor(reps/2)
          for _ in range(work_sessions):
              mark += "OK"
          check_marks.config(text=mark)
  
                                  #user interface
  window = Tk()
  window.title("tomato timer")
  window.config(padx=100, pady=50, bg=YELLOW)
  
  title_label = Label(text="Timer", fg=GREEN, bg=YELLOW, font=(FONT_NAME, 50))
  title_label.grid(column=1, row=0)
  
  canvas = Canvas(width= 200, height=224, bg=YELLOW, highlightthickness=0)
  tomato_img = PhotoImage(file="tomato.png")
  canvas.create_image(100,112, image=tomato_img)
  timer_text = canvas.create_text(100, 130, text="00:00",fill="white", font=(FONT_NAME, 35, "bold"))
  canvas.grid(column=1,row=1)
  
  start_button = Button(text="Start",command=start_timer,highlightthickness=0)
  start_button.grid(column=0,row=2)
  
  reset_button = Button(text="Reset",highlightthickness=0, command= reset_timer)
  reset_button.grid(column=2,row=2)
  
  check_marks = Label(fg=GREEN, bg= YELLOW)
  check_marks.grid(column=1,row=2)
  
  window.mainloop()
  
  
  
  
  
  
  
  