Byte calculation for bson object

Is there any documentation on how byte size for documents is calculated?

If I run the first statement below , inserting string element with 2 chars into the array, I get that this is 23 bytes using Object.bsonsize(z). how is this counted?

If I run the seconds statement below, where the array has an extra element with 1 character, I get that this is 32 bytes. So there has to be some overhead, is this documented anywhere?

z= {
v : ["a1"]
}
z= {
v : ["a1","a"]
}