workspace:GetPartBoundsInBox() not working as expected

I want an array of parts that are touching the side of this part, but not the ones of the corner
Demonstration:
image

When I use this method, it also returns the parts on the corner instead of the ones only touching the sides…

How can I get the parts touching the sides only… is it possible to do this without making a really complicated and laggy script? This might be looping through models so it’s important that it isn’t laggy.

print(workspace:GetPartBoundsInBox(workspace.Part.CFrame, workspace.Part.Size))

also, not all parts are gonna stay in a grid pattern, so it needs to include parts that are offset but still touching the edges