You can use a string splitter for this. Here is the DelimitedSplit8K function by Jeff Moden.
DECLARE @str VARCHAR(8000) = 'I like red shoes and green shoes, but green are my favourite'
SELECT
COUNT(DISTINCT ITEM)
FROM dbo.DelimitedSplit8K(@str, ' ')
WHERE
Item IN('red', 'green', 'blue')
SQL Fiddle