I'm working with a graph model that looks like the one below (source).

I want to find all domestic flights for a particular country, that is flights that have both a DESTINATION and SOURCE flight in an airport that belongs to that country. This is the Cypher query I'm working on:
MATCH (cr:Country {name:'Italy'})<-[:EXIST]-(ct:City)<-[:IS_IN]-(ai:Airport)
WITH ai
MATCH (ai)-[:DESTINATION|:SOURCE]-(f:Flight)-[:OF]-(ar:Airline)
WITH ar as airline, count(distinct(f)) as flights
ORDER BY flights DESC
RETURN airline.name, flights
LIMIT 10
The problem with the above query is that it will also return flights with a DESTINATION or SOURCE that is not in Italy. Can you help me to rephrase the query to get the correct results?