I found the solution...
For anyone with the same problem, make sure you assign unique codes to each tag. In my case, having initially just used numbers (e.g. 1 to 25), when for instance 5 was picked it selected 5, 15 and 25 as well. Making the list much longer than it should be!
I would have thought that the "any words exact" would have solved this issue, but for some reason it doesnt return all the articles that have been marked.
So, by assigning a unique code to each tag allowed me to use "any words" and it then generated the correct list of articles.