Example for understanding shallow and deepcopy - as well like to know why ID were working unexpected for li3 & li4 when doing deepcopies

As per my understanding,
var1 - original
var2 - shallow copy
var3 - deep copy
because the documentation mentioned that:

import copy
li1 = [1, 2, [3, 5], 4]
print("li1 ID: ", id(li1), "Value: ", li1)
li2 = copy.copy(li1)
print("li2 ID: ", id(li2), "Value: ", li2)
li3 = copy.deepcopy(li1)
print("li3 ID: ", id(li3), "Value: ", li3)
li1[2][0]=7
li4= copy.deepcopy(li1)
print(“After modification:”)
print("li2 ID: ", id(li2), "Value: ", li2)
print("li3 ID: ", id(li3), "Value: ", li3)
print("li4 ID: ", id(li3), "Value: ", li4)

==============
Output:
li1 ID: 140223723119040 Value: [1, 2, [3, 5], 4]
li2 ID: 140223723164032 Value: [1, 2, [3, 5], 4]
li3 ID: 140223704018816 Value: [1, 2, [3, 5], 4]
After modification:
li2 ID: 140223723164032 Value: [1, 2, [7, 5], 4]
li3 ID: 140223704018816 Value: [1, 2, [3, 5], 4]
li4 ID: 140223704018816 Value: [1, 2, [7, 5], 4]

===> May I know why in above output li3 and li4 pointing to same ID.

print("li4 ID: ", id(li3), "Value: ", li4) 

should be

print("li4 ID: ", id(li4), "Value: ", li4)

typo i think

Ok thanks