<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def diff(img1, img2, x1y1, x2y2):
 """Compare two images with given alignments. Returns a difference map. ``x1y1``: a tuple ``(x1, y1)`` to specify the top-left corner of the aligned area with respect to ``img1``. ``x2y2``: a tuple ``(x2, y2)`` to specify the top-left corner of the aligned area with respect to ``img2``. Either ``x1`` or ``x2`` must be 0, depending on whether ``img1`` is narrower or wider than ``img2``. Both must be 0 if the two images have the same width. Either ``y1`` or ``y2`` must be 0, depending on whether ``img2`` is shorter or taller than ``img2``. Both must be 0 if the two images have the same height. Suppose ``img1`` is bigger than ``img2``:: | img1 ^ | | | y1 | | v | | | img2 | | |<---->| | | | x1 | | | In this case ``x2`` and ``y2`` are zero, ``0 <= x1 <= (w1 - w2)``, and ``0 <= y1 <= (h1 - h2)``, where ``(w1, h1) == img1.size`` and ``(w2, h2) == img2.size``. If ``img2`` is smaller than ``img1``, just swap the labels in the description above. Suppose ``img1`` is wider but shorter than ``img2``:: | img2 ^ | | | y2 | | v | | img1 | | | | | | | |<---->| | | | x1 | | | | | | | In this case ``x2`` and ``y1`` are zero, ``0 <= x1 <= (w1 - w2)``, and ``0 <= y2 <= (h2 - h1)``, where ``(w1, h1) == img1.size`` and ``(w2, h2) == img2.size``. If ``img1`` is narrower but taller than ``img2``, just swap the labels in the description above. """

    x1, y1 = x1y1
    x2, y2 = x2y2
    w1, h1 = img1.size
    w2, h2 = img2.size
    w, h = min(w1, w2), min(h1, h2)
    diff = ImageChops.difference(img1.crop((x1, y1, x1+w, y1+h)),
                                 img2.crop((x2, y2, x2+w, y2+h)))
    diff = diff.convert('L')
    return diff