Before the war started, Ukrainians had 250,000 active duty military personnel and 530,000 reserve forces.
They had countless air defense, missile, howitzers, tanks, and fighter jets.
They had and still have the support of NATO which provides countless financial and military support including missiles, rockets, aerial, naval, and sattelite imagery, guidance, and intelligence support.
They have a terrain that is full of forests and rivers, which are perfect hide-outs for an army that is waging an asymmetric warfare.
Most importantly, as former Marine Colonel and UN Weapons Inspector Scott Ritter confirmed, Ukraine could militarily beat any nation in NATO except USA and Turkey.
Furthermore, Russia was imposed the most severe economic embargo that any nation had ever faced. It was a siege designed to suffocate the Russian economy.
So when you look at those conditions, Russia liberating the whole LPR and most of DPR in addition to big towns in the South such as Meriupol, Kherson, and others, clearly point to the overwhelming odds the Russians faced and their military superiority for gradually defeating Ukraine backed by NATO.
Russia fighting inch by inch means they want to minimize their casualties while inflicting heavy losses on Ukrainian forces. Russians are truly providing a classical textbook of how to defeat an army backed by powerful adversary like NATO. It is a miracle that Russia survived the siege while making a gradual progress in the battle-field.