Matching vertex indices in similar models by UV coordinates
A caveat.. there are people on this site who are better at this than me.. I wouldn't have posted if one of them had done it first. (I've really had a go at it, to explore bmesh better for myself)
This script may be a starting point though.. it assumes the two meshes share identical UV maps, vertex counts, and that there are no overlapping / coincident vertices in the map(s).
To use it, you would insert the source and target object names, and the names of their matching UV maps. It creates a dictionary of the pairs of vertex indices, keyed by the UV coordinates.
import bpy
import bmesh
from collections import defaultdict

# Insert object names here
ob1 = bpy.data.objects['C1'] # Source object
ob2 = bpy.data.objects['C2'] # Target object
me1 = ob1.data 
me2 = ob2.data

# BMesh representations of both meshes
bm1 = bmesh.new()   
bm1.from_mesh(me1) 
bm2 = bmesh.new()   
bm2.from_mesh(me2)

  
# Insert UV map names here
uvm1 = bm1.loops.layers.uv['UVMap'] # Source's map
uvm2 = bm2.loops.layers.uv['UVMap'] # Target's map

#Create dict {(UV coordinate : [bm1 vert idx, bm2 vert idx]),...}
uvdict = defaultdict(lambda: [-1,-1])

for face in bm1.faces:
    for loop in face.loops:
        uvco = loop[uvm1].uv[:]
        vidx = loop.vert.index    
        uvdict[uvco][0] = vidx
        
for face in bm2.faces:
    for loop in face.loops:
        uvco = loop[uvm2].uv[:]
        vidx = loop.vert.index
        uvdict[uvco][1] = vidx 
               
#get rid of dupe loop -&gt; vert refs
matchlist = list(set(tuple(x) for x in uvdict.values()))

bm2.verts.ensure_lookup_table()

#reassign target v indices
for pair in matchlist:
    bm2.verts [pair[1]].index = pair[0]
    
bm2.verts.sort()
bm2.to_mesh(me2)

bm1.free() 
bm2.free()

It's possible I've got the wrong end of the stick re. your problem.. I run the script in object mode, with nothing selected. Tightening / correction, by folks who know better, would be welcome.