you never explained what it meant when multiple inputs went into a not gate.
based on how you implemented it, it's either an and or an or gate.. which means the corresponding gate is completely redundant.
i solved way too many by simply playing with it. never understanding why it worked because your implementation was inaccurate i think.