#include <stdio.h> 
#include <math.h> 
#include <gd.h> 
#include <stdlib.h>  

int main(int argc, char *argv[]) {
 gdImagePtr img1,img2;
 int x,y,c1,c2;
 long sum,s,area;
 FILE *fp;
 if (argc<2) {
  printf("Syntax: compare_images <image1.jpg> <image2.jpg>\n");
  exit(1);
 }
 fp = fopen(argv[1], "rb");
 img1=gdImageCreateFromJpeg(fp);
 fclose(fp);
 fp = fopen(argv[2], "rb");
 img2=gdImageCreateFromJpeg(fp);
 fclose(fp);
 sum=0;
 area=img1->sx * img1->sy;
 for (x=0;x<=img1->sx;x++) {
  for (y=0;y<=img1->sy;y++) {
   c1=gdImageGetPixel(img1,x,y);
   c2=gdImageGetPixel(img2,x,y);
   s=abs(gdTrueColorGetRed(c1)-gdTrueColorGetRed(c2));
   s+=abs(gdTrueColorGetGreen(c1)-gdTrueColorGetGreen(c2));
   s+=abs(gdTrueColorGetBlue(c1)-gdTrueColorGetBlue(c2));
   sum+=s/3;
  } 
 }
 gdImageDestroy(img1);
 gdImageDestroy(img2);
 printf("%d\n",sum/area);
 return 0;
}