You overwrite the value of $post
when you output the first set of posts, so it’s no longer the same post object as your single post.
You can either wp_reset_postdata()
after each loop (which you should do after the last one anyway), or assign $post->ID
to some other var before the loop, and reference that instead so it doesn’t get overwritten.