Примерный шаблон по решению подобных задач:
Ссылка с конкретно разобранным примером:
https://infopedia.su/2x3530.html