from __future__ import annotations


# Dictionary with irregular verbs. Each entry contains an array with elements [past simple, past perfect].
# Source: https://github.com/WithEnglishWeCan/generated-english-irregular-verbs/blob/master/irregular.verbs.build.json
#   the first word was taken
irregular_verbs = {
    "abide": ["abode", "abode"],
    "aby": ["abought", "abought"],
    "alight": ["alit", "alit"],
    "arise": ["arose", "arisen"],
    "awake": ["awoke", "awoken"],
    "backbite": ["backbit", "backbitten"],
    "backfit": ["backfit", "backfit"],
    "backlight": ["backlit", "backlit"],
    "backslide": ["backslid", "backslid"],
    "be": [("was", "were"), "been"],
    "bear": ["bore", "born"],
    "beat": ["beat", "beaten"],
    "become": ["became", "become"],
    "bedight": ["bedight", "bedight"],
    "befall": ["befell", "befallen"],
    "beget": ["begot", "begotten"],
    "begin": ["began", "begun"],
    "begird": ["begirt", "begirt"],
    "behight": ["behight", "behight"],
    "behold": ["beheld", "beheld"],
    "belay": ["belayed", "belayed"],
    "bend": ["bent", "bent"],
    "bereave": ["bereft", "bereft"],
    "beseech": ["besought", "besought"],
    "beset": ["beset", "beset"],
    "bespeak": ["bespoke", "bespoken"],
    "bestrew": ["bestrewed", "bestrewed"],
    "bestride": ["bestrode", "bestridden"],
    "bet": ["bet", "bet"],
    "betake": ["betook", "betaken"],
    "bethink": ["bethought", "bethought"],
    "beweep": ["bewept", "bewept"],
    "bid": ["bade", "bidden"],
    "bide": ["bided", "bided"],
    "bind": ["bound", "bound"],
    "bite": ["bit", "bitten"],
    "blaw": ["blawed", "blawn"],
    "bleed": ["bled", "bled"],
    "blend": ["blended", "blended"],
    "bless": ["blessed", "blessed"],
    "blow": ["blew", "blown"],
    "bottle-feed": ["bottle-fed", "bottle-fed"],
    "bowstring": ["bowstrung", "bowstrung"],
    "break": ["broke", "broken"],
    "breast-feed": ["breast-fed", "breast-fed"],
    "breed": ["bred", "bred"],
    "bring": ["brought", "brought"],
    "broadcast": ["broadcast", "broadcast"],
    "browbeat": ["browbeat", "browbeat"],
    "build": ["built", "built"],
    "burn": ["burnt", "burnt"],
    "burst": ["burst", "burst"],
    "bust": ["bust", "bust"],
    "buy": ["bought", "bought"],
    "cast": ["cast", "cast"],
    "catch": ["caught", "caught"],
    "cheerlead": ["cheerled", "cheerled"],
    "chide": ["chid", "chid"],
    "choose": ["chose", "chosen"],
    "clap": ["clapped", "clapped"],
    "clear-cut": ["clear-cut", "clear-cut"],
    "cleave": ["cleft", "cleft"],
    "cleek": ["claught", "cleeked"],
    "clepe": ["cleped", "cleped"],
    "cling": ["clung", "clung"],
    "clothe": ["clad", "clad"],
    "colorbreed": ["colorbred", "colorbred"],
    "colorcast": ["colorcast", "colorcast"],
    "come": ["came", "come"],
    "cost": ["cost", "cost"],
    "cost-cut": ["cost-cut", "cost-cut"],
    "counterdraw": ["counterdrew", "counterdrawn"],
    "counterlight": ["counterlit", "counterlit"],
    "crash-dive": ["crash-dived", "crash-dived"],
    "creep": ["crept", "crept"],
    "creep-feed": ["creep-fed", "creep-fed"],
    "crib-bite": ["crib-bit", "crib-bitten"],
    "cross-bite": ["cross-bit", "cross-bitten"],
    "cross-string": ["cross-strung", "cross-strung"],
    "crossbreed": ["crossbred", "crossbred"],
    "crosscut": ["crosscut", "crosscut"],
    "crosslight": ["crosslit", "crosslit"],
    "crow": ["crowed", "crowed"],
    "cut": ["cut", "cut"],
    "dare": ["dared", "dared"],
    "daydream": ["daydreamt", "daydreamt"],
    "deal": ["dealt", "dealt"],
    "deep-freeze": ["deep-froze", "deep-frozen"],
    "dig": ["dug", "dug"],
    "dight": ["dight", "dight"],
    "dispread": ["dispread", "dispread"],
    "disprove": ["disproved", "disproven"],
    "dive": ["dived", "dived"],
    "do": ["did", "done"],
    "dogfight": ["dogfought", "dogfought"],
    "dow": ["dought", "dought"],
    "draw": ["drew", "drawn"],
    "dream": ["dreamt", "dreamt"],
    "drink": ["drank", "drunk"],
    "drip-feed": ["drip-fed", "drip-fed"],
    "drive": ["drove", "driven"],
    "dwell": ["dwelt", "dwelt"],
    "eat": ["ate", "eaten"],
    "end-run": ["end-ran", "end-run"],
    "engird": ["engirt", "engirt"],
    "engrave": ["engraved", "engraved"],
    "enwind": ["enwound", "enwound"],
    "fall": ["fell", "fallen"],
    "fast-cut": ["fast-cut", "fast-cut"],
    "feed": ["fed", "fed"],
    "feel": ["felt", "felt"],
    "fight": ["fought", "fought"],
    "find": ["found", "found"],
    "fit": ["fit", "fit"],
    "flash-freeze": ["flash-froze", "flash-frozen"],
    "flee": ["fled", "fled"],
    "fling": ["flung", "flung"],
    "floodlight": ["floodlit", "floodlit"],
    "fly": ["flew", "flown"],
    "flyblow": ["flyblew", "flyblown"],
    "forbear": ["forbore", "forborne"],
    "forbid": ["forbade", "forbidden"],
    "force-feed": ["force-fed", "force-fed"],
    "fordo": ["fordid", "fordone"],
    "forecast": ["forecast", "forecast"],
    "forefeel": ["forefelt", "forefelt"],
    "forego": ["forewent", "foregone"],
    "foreknow": ["foreknew", "foreknown"],
    "forerun": ["foreran", "forerun"],
    "foresee": ["foresaw", "foreseen"],
    "foreshow": ["foreshowed", "foreshown"],
    "forespeak": ["forespoke", "forespoken"],
    "foretell": ["foretold", "foretold"],
    "forget": ["forgot", "forgotten"],
    "forgive": ["forgave", "forgiven"],
    "forlese": ["forlore", "forlorn"],
    "forsake": ["forsook", "forsaken"],
    "forswear": ["forswore", "forsworn"],
    "fraught": ["fraught", "fraught"],
    "free-fall": ["free-fell", "free-fallen"],
    "freeze": ["froze", "frozen"],
    "frostbite": ["frostbit", "frostbitten"],
    "gainsay": ["gainsaid", "gainsaid"],
    "geld": ["gelded", "gelded"],
    "get": ["got", "got"],
    "ghostwrite": ["ghostwrote", "ghostwritten"],
    "gild": ["gilt", "gilt"],
    "gin": ["gan", "gan"],
    "gird": ["girded", "girded"],
    "give": ["gave", "given"],
    "gnaw": ["gnawed", "gnawed"],
    "go": ["went", "gone"],
    "grave": ["graved", "graven"],
    "grind": ["ground", "ground"],
    "grow": ["grew", "grown"],
    "hagride": ["hagrode", "hagridden"],
    "halterbreak": ["halterbroke", "halterbroken"],
    "hamstring": ["hamstrung", "hamstrung"],
    "hand-feed": ["hand-fed", "hand-fed"],
    "hand-ride": ["hand-rode", "hand-ridden"],
    "handsew": ["handsewed", "handsewn"],
    "handwrite": ["handwrote", "handwritten"],
    "hang": ["hung", "hung"],
    "have": ["had", "had"],
    "hear": ["heard", "heard"],
    "heave": ["heaved", "heaved"],
    "hew": ["hewed", "hewn"],
    "hide": ["hid", "hidden"],
    "hight": ["hote", "hoten"],
    "hit": ["hit", "hit"],
    "hoise": ["hoised", "hoised"],
    "hoist": ["hoist", "hoist"],
    "hold": ["held", "held"],
    "house-sit": ["house-sat", "house-sat"],
    "housebreak": ["housebroke", "housebroken"],
    "hurt": ["hurt", "hurt"],
    "inbreed": ["inbred", "inbred"],
    "indwell": ["indwelt", "indwelt"],
    "inhold": ["inheld", "inheld"],
    "inlay": ["inlaid", "inlaid"],
    "input": ["input", "input"],
    "inset": ["inset", "inset"],
    "interblend": ["interblended", "interblended"],
    "interbreed": ["interbred", "interbred"],
    "intercut": ["intercut", "intercut"],
    "intergrave": ["intergraved", "intergraved"],
    "interlay": ["interlaid", "interlaid"],
    "interset": ["interset", "interset"],
    "interweave": ["interwove", "interwoven"],
    "interwind": ["interwound", "interwound"],
    "inweave": ["inwove", "inwoven"],
    "inwind": ["inwound", "inwound"],
    "jerry-build": ["jerry-built", "jerry-built"],
    "keep": ["kept", "kept"],
    "ken": ["kent", "kent"],
    "kneel": ["knelt", "knelt"],
    "knit": ["knit", "knit"],
    "know": ["knew", "known"],
    "lade": ["laded", "laden"],
    "landslide": ["landslid", "landslid"],
    "lay": ["laid", "laid"],
    "lead": ["led", "led"],
    "lean": ["leant", "leant"],
    "leap": ["leapt", "leapt"],
    "learn": ["learnt", "learnt"],
    "leave": ["left", "left"],
    "lend": ["lent", "lent"],
    "lep": ["lept", "lept"],
    "let": ["let", "let"],
    "lie": ["lay", "lain"],
    "light": ["lit", "lit"],
    "linebreed": ["linebred", "linebred"],
    "lip-read": ["lip-read", "lip-read"],
    "lose": ["lost", "lost"],
    "make": ["made", "made"],
    "mean": ["meant", "meant"],
    "meet": ["met", "met"],
    "melt": ["melted", "molten"],
    "misbecome": ["misbecame", "misbecome"],
    "miscast": ["miscast", "miscast"],
    "mischoose": ["mischose", "mischosen"],
    "miscut": ["miscut", "miscut"],
    "misdeal": ["misdealt", "misdealt"],
    "misdo": ["misdid", "misdone"],
    "misfall": ["misfell", "misfallen"],
    "misfeed": ["misfed", "misfed"],
    "misgive": ["misgave", "misgiven"],
    "mishear": ["misheard", "misheard"],
    "mishit": ["mishit", "mishit"],
    "misknow": ["misknew", "misknown"],
    "mislay": ["mislaid", "mislaid"],
    "mislead": ["misled", "misled"],
    "mislearn": ["mislearnt", "mislearnt"],
    "misread": ["misread", "misread"],
    "missay": ["missaid", "missaid"],
    "missend": ["missent", "missent"],
    "misset": ["misset", "misset"],
    "misspeak": ["misspoke", "misspoken"],
    "misspell": ["misspelt", "misspelt"],
    "misspend": ["misspent", "misspent"],
    "misswear": ["misswore", "missworn"],
    "mistake": ["mistook", "mistaken"],
    "misteach": ["mistaught", "mistaught"],
    "mistell": ["mistold", "mistold"],
    "misthink": ["misthought", "misthought"],
    "misunderstand": ["misunderstood", "misunderstood"],
    "miswear": ["misswore", "misworn"],
    "miswed": ["miswed", "miswed"],
    "miswrite": ["miswrote", "miswritten"],
    "mow": ["mowed", "mown"],
    "naysay": ["naysaid", "naysaid"],
    "nose-dive": ["nose-dived", "nose-dived"],
    "offset": ["offset", "offset"],
    "outbid": ["outbid", "outbid"],
    "outbreed": ["outbred", "outbred"],
    "outdo": ["outdid", "outdone"],
    "outdraw": ["outdrew", "outdrawn"],
    "outdrink": ["outdrank", "outdrunk"],
    "outdrive": ["outdrove", "outdriven"],
    "outfight": ["outfought", "outfought"],
    "outfly": ["outflew", "outflown"],
    "outgrow": ["outgrew", "outgrown"],
    "outlay": ["outlaid", "outlaid"],
    "outleap": ["outleapt", "outleapt"],
    "output": ["output", "output"],
    "outride": ["outrode", "outridden"],
    "outrun": ["outran", "outrun"],
    "outsee": ["outsaw", "outseen"],
    "outsell": ["outsold", "outsold"],
    "outshine": ["outshone", "outshone"],
    "outshoot": ["outshot", "outshot"],
    "outsing": ["outsang", "outsung"],
    "outsit": ["outsat", "outsat"],
    "outsleep": ["outslept", "outslept"],
    "outsmell": ["outsmelled", "outsmelled"],
    "outspeak": ["outspoke", "outspoken"],
    "outspeed": ["outsped", "outsped"],
    "outspend": ["outspent", "outspent"],
    "outspin": ["outspun", "outspun"],
    "outspring": ["outsprang", "outsprung"],
    "outstand": ["outstood", "outstood"],
    "outswear": ["outswore", "outsworn"],
    "outswim": ["outswam", "outswum"],
    "outtell": ["outtold", "outtold"],
    "outthink": ["outthought", "outthought"],
    "outthrow": ["outthrew", "outthrown"],
    "outwear": ["outwore", "outworn"],
    "outwind": ["outwound", "outwound"],
    "outwork": ["outworked", "outworked"],
    "outwrite": ["outwrote", "outwritten"],
    "overbear": ["overbore", "overborne"],
    "overbid": ["overbid", "overbid"],
    "overblow": ["overblew", "overblown"],
    "overbreed": ["overbred", "overbred"],
    "overbuild": ["overbuilt", "overbuilt"],
    "overbuy": ["overbought", "overbought"],
    "overcast": ["overcast", "overcast"],
    "overcome": ["overcame", "overcome"],
    "overcut": ["overcut", "overcut"],
    "overdo": ["overdid", "overdone"],
    "overdraw": ["overdrew", "overdrawn"],
    "overdrink": ["overdrank", "overdrunk"],
    "overdrive": ["overdrove", "overdriven"],
    "overeat": ["overate", "overeaten"],
    "overfeed": ["overfed", "overfed"],
    "overfly": ["overflew", "overflown"],
    "overgrow": ["overgrew", "overgrown"],
    "overhang": ["overhung", "overhung"],
    "overhear": ["overheard", "overheard"],
    "overlay": ["overlaid", "overlaid"],
    "overleap": ["overleapt", "overleapt"],
    "overlearn": ["overlearnt", "overlearnt"],
    "overset": ["overset", "overset"],
    "oversew": ["oversewed", "oversewn"],
    "overshoot": ["overshot", "overshot"],
    "oversleep": ["overslept", "overslept"],
    "oversow": ["oversowed", "oversowed"],
    "overspeak": ["overspoke", "overspoken"],
    "overspend": ["overspent", "overspent"],
    "overspill": ["overspilt", "overspilt"],
    "overspin": ["overspun", "overspun"],
    "overspread": ["overspread", "overspread"],
    "overspring": ["oversprang", "oversprung"],
    "overstand": ["overstood", "overstood"],
    "overstrew": ["overstrewed", "overstrewed"],
    "overstride": ["overstrode", "overstridden"],
    "overstrike": ["overstruck", "overstruck"],
    "overstring": ["overstrung", "overstrung"],
    "overtake": ["overtook", "overtaken"],
    "overthink": ["overthought", "overthought"],
    "overthrow": ["overthrew", "overthrown"],
    "overwear": ["overwore", "overworn"],
    "overwind": ["overwound", "overwound"],
    "overwithhold": ["overwithheld", "overwithheld"],
    "overwrite": ["overwrote", "overwritten"],
    "partake": ["partook", "partaken"],
    "pay": ["paid", "paid"],
    "pen": ["pent", "pent"],
    "pinch-hit": ["pinch-hit", "pinch-hit"],
    "plead": ["pled", "pled"],
    "potshot": ["potshot", "potshot"],
    "practice-teach": ["practice-taught", "practice-taught"],
    "prebind": ["prebound", "prebound"],
    "prebuild": ["prebuilt", "prebuilt"],
    "precut": ["precut", "precut"],
    "predo": ["predid", "predone"],
    "premake": ["premade", "premade"],
    "prepay": ["prepaid", "prepaid"],
    "presell": ["presold", "presold"],
    "preset": ["preset", "preset"],
    "preshrink": ["preshrank", "preshrunk"],
    "presplit": ["presplit", "presplit"],
    "price-cut": ["price-cut", "price-cut"],
    "proofread": ["proofread", "proofread"],
    "prove": ["proved", "proven"],
    "put": ["put", "put"],
    "quick-freeze": ["quick-froze", "quick-frozen"],
    "quit": ["quit", "quit"],
    "rap": ["rapped", "rapped"],
    "re-prove": ["re-proved", "re-proved"],
    "read": ["read", "read"],
    "reave": ["reft", "reft"],
    "reawake": ["reawoke", "reawoken"],
    "rebid": ["rebid", "rebid"],
    "rebind": ["rebound", "rebound"],
    "rebroadcast": ["rebroadcast", "rebroadcast"],
    "rebuild": ["rebuilt", "rebuilt"],
    "recast": ["recast", "recast"],
    "recut": ["recut", "recut"],
    "redd": ["redd", "redd"],
    "redeal": ["redealt", "redealt"],
    "redo": ["redid", "redone"],
    "redraw": ["redrew", "redrawn"],
    "reeve": ["rove", "rove"],
    "refit": ["refit", "refit"],
    "regrind": ["reground", "reground"],
    "regrow": ["regrew", "regrown"],
    "rehang": ["rehung", "rehung"],
    "rehear": ["reheard", "reheard"],
    "reknit": ["reknit", "reknit"],
    "relay": ["relaid", "relaid"],
    "relearn": ["relearnt", "relearnt"],
    "relight": ["relit", "relit"],
    "remake": ["remade", "remade"],
    "rend": ["rent", "rent"],
    "repay": ["repaid", "repaid"],
    "reread": ["reread", "reread"],
    "rerun": ["reran", "rerun"],
    "resell": ["resold", "resold"],
    "resend": ["resent", "resent"],
    "reset": ["reset", "reset"],
    "resew": ["resewed", "resewn"],
    "reshoot": ["reshot", "reshot"],
    "resit": ["resat", "resat"],
    "resow": ["resowed", "resown"],
    "respell": ["respelled", "respelled"],
    "restring": ["restrung", "restrung"],
    "retake": ["retook", "retaken"],
    "reteach": ["retaught", "retaught"],
    "retear": ["retore", "retorn"],
    "retell": ["retold", "retold"],
    "rethink": ["rethought", "rethought"],
    "retread": ["retrod", "retrodden"],
    "retrofit": ["retrofit", "retrofit"],
    "rewake": ["rewoke", "rewoken"],
    "reweave": ["rewove", "rewoven"],
    "rewed": ["rewed", "rewed"],
    "rewet": ["rewet", "rewet"],
    "rewin": ["rewon", "rewon"],
    "rewind": ["rewound", "rewound"],
    "rewrite": ["rewrote", "rewritten"],
    "rid": ["rid", "rid"],
    "ride": ["rode", "ridden"],
    "ring": ["rang", "rung"],
    "rise": ["rose", "risen"],
    "rive": ["rived", "riven"],
    "rough-hew": ["rough-hewed", "rough-hewn"],
    "roughcast": ["roughcast", "roughcast"],
    "run": ["ran", "run"],
    "sand-cast": ["sand-cast", "sand-cast"],
    "saw": ["sawed", "sawn"],
    "say": ["said", "said"],
    "see": ["saw", "seen"],
    "seek": ["sought", "sought"],
    "self-feed": ["self-fed", "self-fed"],
    "self-sow": ["self-sowed", "self-sown"],
    "sell": ["sold", "sold"],
    "send": ["sent", "sent"],
    "set": ["set", "set"],
    "sew": ["sewed", "sewn"],
    "shake": ["shook", "shaken"],
    "shave": ["shaved", "shaven"],
    "shear": ["shore", "shorn"],
    "shed": ["shed", "shed"],
    "shend": ["shent", "shent"],
    "shew": ["shewed", "shewn"],
    "shine": ["shone", "shone"],
    "shit": ["shat", "shat"],
    "shoe": ["shod", "shod"],
    "shoot": ["shot", "shot"],
    "shortcut": ["shortcut", "shortcut"],
    "show": ["showed", "shown"],
    "shrink": ["shrank", "shrunk"],
    "shrive": ["shrove", "shriven"],
    "shut": ["shut", "shut"],
    "sidewind": ["sidewound", "sidewound"],
    "sight-read": ["sight-read", "sight-read"],
    "sightsee": ["sightsaw", "sightseen"],
    "sing": ["sang", "sung"],
    "sink": ["sank", "sunk"],
    "sit": ["sat", "sat"],
    "skywrite": ["skywrote", "skywritten"],
    "slay": ["slew", "slain"],
    "sleep": ["slept", "slept"],
    "slide": ["slid", "slid"],
    "sling": ["slung", "slung"],
    "slink": ["slunk", "slunk"],
    "slit": ["slit", "slit"],
    "smell": ["smelt", "smelt"],
    "smite": ["smote", "smitten"],
    "snapshoot": ["snapshot", "snapshot"],
    "sneak": ["sneaked", "sneaked"],
    "soothsay": ["soothsaid", "soothsaid"],
    "sow": ["sowed", "sown"],
    "speak": ["spoke", "spoken"],
    "speed": ["sped", "sped"],
    "spell": ["spelt", "spelt"],
    "spellbind": ["spellbound", "spellbound"],
    "spend": ["spent", "spent"],
    "spill": ["spilt", "spilt"],
    "spin": ["span", "spun"],
    "spit": ["spat", "spat"],
    "split": ["split", "split"],
    "spoil": ["spoilt", "spoilt"],
    "spoonfeed": ["spoonfed", "spoonfed"],
    "spread": ["spread", "spread"],
    "spring": ["sprang", "sprung"],
    "stall-feed": ["stall-fed", "stall-fed"],
    "stand": ["stood", "stood"],
    "stave": ["stove", "stove"],
    "steal": ["stole", "stolen"],
    "stick": ["stuck", "stuck"],
    "sting": ["stung", "stung"],
    "stink": ["stank", "stunk"],
    "straphang": ["straphung", "straphung"],
    "strew": ["strewed", "strewn"],
    "stride": ["strode", "stridden"],
    "strike": ["struck", "struck"],
    "string": ["strung", "strung"],
    "strip": ["stript", "stript"],
    "strive": ["strove", "striven"],
    "sublet": ["sublet", "sublet"],
    "sunburn": ["sunburned", "sunburned"],
    "swear": ["swore", "sworn"],
    "sweat": ["sweat", "sweat"],
    "sweep": ["swept", "swept"],
    "swell": ["swelled", "swollen"],
    "swim": ["swam", "swum"],
    "swing": ["swung", "swung"],
    "swink": ["swank", "swonken"],
    "switch-hit": ["switch-hit", "switch-hit"],
    "take": ["took", "taken"],
    "teach": ["taught", "taught"],
    "tear": ["tore", "torn"],
    "telecast": ["telecast", "telecast"],
    "tell": ["told", "told"],
    "test-drive": ["test-drove", "test-driven"],
    "test-fly": ["test-flew", "test-flown"],
    "think": ["thought", "thought"],
    "thrive": ["throve", "thriven"],
    "throw": ["threw", "thrown"],
    "thrust": ["thrust", "thrust"],
    "thunderstrike": ["thunderstruck", "thunderstruck"],
    "tine": ["tint", "tint"],
    "tread": ["trod", "trodden"],
    "troubleshoot": ["troubleshot", "troubleshot"],
    "typecast": ["typecast", "typecast"],
    "typeset": ["typeset", "typeset"],
    "typewrite": ["typewrote", "typewritten"],
    "unbear": ["unbore", "unborn"],
    "unbend": ["unbent", "unbent"],
    "unbind": ["unbound", "unbound"],
    "unbuild": ["unbuilt", "unbuilt"],
    "unclothe": ["unclad", "unclad"],
    "underbid": ["underbid", "underbid"],
    "underbuy": ["underbought", "underbought"],
    "undercut": ["undercut", "undercut"],
    "underdo": ["underdid", "underdone"],
    "underfeed": ["underfed", "underfed"],
    "undergird": ["undergirt", "undergirt"],
    "undergo": ["underwent", "undergone"],
    "underlay": ["underlaid", "underlaid"],
    "underlet": ["underlet", "underlet"],
    "underlie": ["underlay", "underlain"],
    "underpay": ["underpaid", "underpaid"],
    "underrun": ["underran", "underrun"],
    "undersell": ["undersold", "undersold"],
    "undershoot": ["undershot", "undershot"],
    "underspend": ["underspent", "underspent"],
    "understand": ["understood", "understood"],
    "undertake": ["undertook", "undertaken"],
    "underthrust": ["underthrust", "underthrust"],
    "underwrite": ["underwrote", "underwritten"],
    "undo": ["undid", "undone"],
    "undraw": ["undrew", "undrawn"],
    "unfreeze": ["unfroze", "unfrozen"],
    "unhang": ["unhung", "unhung"],
    "unhide": ["unhid", "unhidden"],
    "unhold": ["unheld", "unheld"],
    "unknit": ["unknit", "unknit"],
    "unlade": ["unladed", "unladen"],
    "unlay": ["unlaid", "unlaid"],
    "unlearn": ["unlearnt", "unlearnt"],
    "unmake": ["unmade", "unmade"],
    "unreeve": ["unrove", "unrove"],
    "unsay": ["unsaid", "unsaid"],
    "unsell": ["unsold", "unsold"],
    "unsew": ["unsewed", "unsewn"],
    "unsling": ["unslung", "unslung"],
    "unspeak": ["unspoke", "unspoken"],
    "unspin": ["unspun", "unspun"],
    "unstick": ["unstuck", "unstuck"],
    "unstring": ["unstrung", "unstrung"],
    "unswear": ["unswore", "unsworn"],
    "unteach": ["untaught", "untaught"],
    "unthink": ["unthought", "unthought"],
    "untread": ["untrod", "untrodden"],
    "unweave": ["unwove", "unwoven"],
    "unwind": ["unwound", "unwound"],
    "unwrite": ["unwrote", "unwritten"],
    "upbuild": ["upbuilt", "upbuilt"],
    "uphold": ["upheld", "upheld"],
    "uppercut": ["uppercut", "uppercut"],
    "uprise": ["uprose", "uprisen"],
    "upset": ["upset", "upset"],
    "upspring": ["upsprang", "upsprung"],
    "upsweep": ["upswept", "upswept"],
    "uptear": ["uptore", "uptorn"],
    "vex": ["vext", "vext"],
    "wake": ["woke", "woken"],
    "waylay": ["waylaid", "waylaid"],
    "wear": ["wore", "worn"],
    "weave": ["wove", "woven"],
    "wed": ["wed", "wed"],
    "weep": ["wept", "wept"],
    "wend": ["wended", "wended"],
    "wet": ["wet", "wet"],
    "whipsaw": ["whipsawed", "whipsawn"],
    "win": ["won", "won"],
    "wind": ["wound", "wound"],
    "winterfeed": ["winterfed", "winterfed"],
    "wiredraw": ["wiredrew", "wiredrawn"],
    "wit": ["wist", "wist"],
    "withdraw": ["withdrew", "withdrawn"],
    "withhold": ["withheld", "withheld"],
    "withstand": ["withstood", "withstood"],
    "wont": ["wont", "wont"],
    "work": ["worked", "worked"],
    "wrap": ["wrapped", "wrapped"],
    "wreak": ["wreaked", "wreaked"],
    "wring": ["wrung", "wrung"],
    "write": ["wrote", "written"],
    "zinc": ["zinced", "zinced"]
}


class VerbConjugator:
    @staticmethod
    def past_simple(verb: str):
        if verb in irregular_verbs:
            return irregular_verbs[verb][0]

        exceptions = {
            "cry": "cried",
            "drop": "dropped",
            "look for": "looked for",
            "stop": "stopped",
            "travel": "travelled",
        }
        if verb in exceptions:
            return exceptions[verb]

        if verb.endswith("e"):
            return verb + "d"

        return verb + "ed"

    @staticmethod
    def present_singular(verb: str):
        exceptions = {
            "cry": "cries",
            "do": "goes",
            "go": "goes",
            "have": "has",
            "look for": "looks for",
            "teach": "teaches",
            "worry": "worries",
        }
        if verb in exceptions:
            return exceptions[verb]

        return verb + "s"

    @staticmethod
    def continuous(verb: str):
        exceptions = {
            "begin": "beginning",
            "let": "letting",
            "look for": "looking for",
            "wait": "waiting",
        }
        if verb in exceptions:
            return exceptions[verb]

        if verb.endswith("e"):
            return verb[:-1] + "ing"

        if verb.endswith("t"):
            return verb + "ting"

        return verb + "ing"
