Here is another approach to look at the question.
3 data bits and 4 parity check bits. Isn't that overkill for error detection? We can pretty much send the same 3 bits again with an additional parity bit to establish which 3 data bits had an error.
So could this be a self-correcting hamming code?
For a self correcting hamming code, with 3 data bits (up to 4 data bits), we need an additional 3 parity bits. That still comes out to be 3+3=6. However, the problem with hamming codes is that they cannot tell if a double-bit error caused the modification or a single bit error. It assumes that it was a single bit error and the auto-correct mechanism gives us wrong data (in case more bits were modified). Adding 1 extra parity bit solves that to some extent. 3+3+1 = 7! https://en.wikipedia.org/wiki/Hamming_code
Just casually looking at the last bits of the codewords will tell you that they are even parity bits. Let us call them [Pa] as they are a single additional parity bit at the end.
[D3], [D5] and [D6] should be data bits. Remaining: [P1],[P2] and [P4] should be the parity bits used for correction.
The codewords should therefore look like: [P1][P2][D3][P4][D5][D6][Pa].
The hamming code part should only be [P1][P2][D3][P4][D5][D6]
For even parities (which seems to be the norm here):
[P1] = [D3]⊕[D5] (D7 does not exist!)
[P2] = [D3]⊕[D6] (D7 does not exist!)
[P4] = [D5]⊕[D6] (D7 does not exist!)
This holds for all the codewords provided. And it holds for I and III only. The correct answer should therefore be A.