/**
 * Given a set of archaeological sites and excavation areas,
 * this function finds the sites that are completely contained within an excavation area.
 *
 * @param archaeologicalSites Set<String>: A set of archaeological sites represented as strings.
 * @param excavationAreas Set<String>: A set of excavation areas represented as strings.
 * @return Set<String>: Set of archaeological sites that are completely contained within an excavation area.
 */
fun archaeologist(archaeologicalSites: Set<String>, excavationAreas: Set<String>): Set<String> {

    val completelyContainedSites = mutableSetOf<String>()

    // Iterate over each archaeological site
    for (site in archaeologicalSites) {
        var completelyContained = true

        // Iterate over each excavation area
        for (area in excavationAreas) {
            // Check if all characters in the site are also present in the area
            if (site.all { char -> area.contains(char) }) {
                continue  // Skip to the next iteration of the loop
            }

            // If any character is missing, set the flag to False
            completelyContained = false
            break
        }

        // Check if the site is completely contained in any excavation area
        if (completelyContained) {
            completelyContainedSites.add(site)
        }
    }

    return completelyContainedSites
}
/**
 * Given a set of archaeological sites and excavation areas,
 * this function finds the sites that are completely contained within an excavation area.
 *
 * @param archaeologicalSites Set<String>: A set of archaeological sites represented as strings.
 * @param excavationAreas Set<String>: A set of excavation areas represented as strings.
 * @return Set<String>: Set of archaeological sites that are completely contained within an excavation area.
 */
fun archaeologist(archaeologicalSites: Set<String>, excavationAreas: Set<String>): Set<String> {
/**
 * Given a set of archaeological sites and excavation areas,
 * this function finds the sites that are completely contained within an excavation area.
 *
 * @param archaeologicalSites Set<String>: A set of archaeological sites represented as strings.
 * @param excavationAreas Set<String>: A set of excavation areas represented as strings.
 * @return Set<String>: Set of archaeological sites that are completely contained within an excavation area.
 */
fun archaeologist(archaeologicalSites: Set<String>, excavationAreas: Set<String>): Set<String> {

    val completelyContainedSites = mutableSetOf<String>()

    // Iterate over each archaeological site
    for (site in archaeologicalSites) {
        var completelyContained = true

        // Iterate over each excavation area
        for (area in excavationAreas) {
            // Check if all characters in the site are also present in the area
            if (site.all { char -> area.contains(char) }) {
                continue  // Skip to the next iteration of the loop
            }

            // If any character is missing, set the flag to False
            completelyContained = false
            break
        }

        // Check if the site is completely contained in any excavation area
        if (completelyContained) {
            completelyContainedSites.add(site)
        }
    }

    return completelyContainedSites
}