#!/usr/local/opt/python/bin/python2.7
import sys

operations = ['intersection', 'union', 'difference']


def read_set(fp):
    res = set()
    with open(fp, 'rb') as f:
        for l in f:
            res.add(l.strip())
    return res


def main():
    op = sys.argv[1]
    if op not in operations:
        exit('opperation not supported. please use %s'
             % 'or '.join(operations))

    files = sys.argv[2::]
    sets = map(read_set, files)
    r = reduce((lambda x, y: getattr(x, op)(y)), sets)
    for e in r:
        print e

    print 'final set cardinality: %s' % len(r)

if __name__ == "__main__":
    main()
