Russia and Ukraine have announced the exchange of 206 prisoners of war in a deal brokered by the United Arab Emirates (UAE).
Russia’s ministry of defence said its 103 released servicemen released came from among those captured during the Kursk incursion.
Posting pictures of some of those released on Saturday, Ukrainian President Volodymyr Zelensky said: “Our people are home”.
Last month, Ukrainian forces launched a surprise attack across the Russian border, advancing up to 30km (18 miles) into the Kursk region.
Zelensky said those Ukrainians released included 82 privates and sergeants and 21 officers from the armed forces, national guard, border guards, and police.
He said they had been captured defending the regions of Kyiv, Donetsk, Mariupol, Azovstal, Luhansk, Zaporizhzhia, and Kharkiv.
Russia said its released soldiers were in Belarus and would be given the “necessary psychological and medical assistance” and would be allowed to contact their relatives before being returned to Russia.
The UAE, which has remained broadly neutral in the conflict, has acted as a mediator for previous prisoner swaps.
In August, following the Kursk incursion, an initial exchange was completed involving 230 prisoners in total.
Ukraine’s incursion into Kursk was in part intended to draw troops away from Russia’s operations in eastern Ukraine.
The latest swap comes as Russia said it had recaptured a village in eastern Ukraine, where it has made a number of advances over recent weeks.
On Saturday, the ministry of defence said its forces had taken the village of Zhelanne Pershe in the Pokrovsk district.
It is less than 30km (19 miles) from the town of Pokrovsk, which is home to a key railway station and sits at the intersections of several important roads.
The town plays a crucial role as a logistics hub for Ukrainian forces in the eastern region of Donbas, and has for months been a key target for Russian forces.