#include<stdio.h>                                      /*CHRISTIAN CARDENAS V.*/
#define lim 40
#define max 8
void imprime(char arr[max],int c);
void swap(char arr[max],int k,int l);
int ubic(char carac,int cant,char arr[max]);
main()
{
   int tam,cant,i,j,r,u,p1,p2;
   char area[lim][lim],arr[max],ban,comp;
   printf("\nIngrese el area  de dibujo (debe ser menor que 41): ");
   scanf("%d",&tam);
   while(tam>40)                  /* verifica que se cumpla con el area maxima de dibujo permitida*/
  { 
      printf("\nEl area maxima es 41,ingrese nuevamente el area de dibujo: ");
      scanf("%d",&tam);
  } 
  printf("\nIngrese la cantidad de rectangulos a dibujar: ");
   scanf("%d",&cant);
   while(cant>8 )                    /* verifica que se cumpla con la cant derec permitidos*/
  {
    printf("\nIngrese la cantidad de rectangulos a dibujar: ");
      scanf("%d",&cant);
  } 
  printf("\nIngrese las letras que conformaran los %d rectangulos:",cant);
   for(i=0;i<cant;i++)               /* se ingresa la letras que se utilizaran y se guardan en arr*/
       scanf("%c",&arr[i]);
   for(i=0;i<tam;i++)           /* en esta parte se ingresa el dibujo formado con los rectangulos*/
   {
      for(j=0;j<tam;j++)
         scanf("%c",&area[i][j]);
      getchar();
   }
   for(i=0;i<tam;i++)                       /* se recorre el arreglo y si se encuentra una letra esta */
      for(j=0;j<tam;j++)                    /* sera la letra a comprarar con las demas*/ 
         if(area[i][j]!=' ' && area[i][j]!='\n')
            ban=area[i][j];
   for(r=0;r<tam;r++)
      for(u=0;u<tam;u++)
         if(area[r][u]!='\n'&& area[r][u]!=' '&& area[r][u]!=ban) /* se recorre nuevamente el arreglo y si encon*/
         {                          /*tramos un letra distinta a ban, se le asigna a comp*/
            comp=area[r][u];
	    p1=ubic(comp,cant,arr);   /* se llama a nuestra func ubic, para obtener la posiciones, de comp y ubic*/
	    p2=ubic(ban,cant,arr);
            swap(arr,p1,p2);            /* se llam a la funcion swap*/
         }
   printf("\nLos rectangulos fueron ingresados de la siguiente manera: ");
   imprime(arr,cant);     /* funcion que imprime el orden de las letras,de acuerdo a como se inreso los rect*/
return 0;	
}

void imprime(char arr[max],int c)
{
 int i;
 for(i=0;i<=c;i++)
      printf("%c",arr[i]);
}


void swap(char arr[max],int k,int l) /* funcion que reubica el orden de las letras que componen los rect*/
{
   char temp;
   temp=arr[k];
   arr[k]=arr[l];
   arr[l]=temp;
}


int ubic(char carac,int cant,char arr[max])
{
   int p;
   for(p=0;p<cant;p++)
      if(carac==arr[p])
         return (p);
}

