#include <stdlib.h>
 #include <unac.h>
 
-#define WLEN 5
-
-
 
 int len(char *w){
         int l = -1;
                        r[i] = w[i] - 'A' + 'a';
                else
                        r[i] = w[i];
+       r[l] = '\0';
        return r;
 }
 
 int hasC(char *w, char c){
-        int l = 0;
-        while(w[l]){
-                if(w[l] == c)
-                        return 1;
-                ++l;
+        int i = 0;
+        while(w[i]){
+               if(w[i] == c)
+                       return 1;
+               ++i;
         }
         return 0;
 }
 
+char *append(char *w, char c){
+       int l = len(w);
+       char *r = malloc((l+1)*sizeof(char));
+       for(int i = 0; i < l; ++i)
+               r[i] = w[i];
+       r[l] = c;
+       r[l+1] = '\0';
+       return r;
+}
+
 int equals(char *w1, char *w2){
        int l1 = 0, l2 = 0;
        while(w1[l1] && w2[l2] && w1[l1] == w2[l2])
        char *black = ".....";
        int print = 0;
 
-
        for(int i = 1; i < argc; ++i){
                if(equals(argv[i], "-g")){
                        ++i;
                sol = fopen("sol.txt", "w");
 
        int lc = getLineCount(fp);
-
+       
        for(int l = 0; l < lc; ++l){
                char *word;
                size_t len = 0;
                len = getline(&word, &len, fp);
                unac_string("UTF-8", word, len, &word, &len);
                word[len--] = '\0';
-               word = minimize(word);
+               //word = minimize(word);
                int found = 1;
                
                for(int i = 0; i < gl; ++i)
                                found = 0;
                                break;
                        }
-
                if(found){
                        for(int i = 0; i < yl; ++i)
                                if(yellow[i] != '.' && !hasC(word, yellow[i]) || word[i] == yellow[i]){
                                        found = 0;
                                        break;
                                }
-
                        if(found){
-                               for(int i = 0; i < bl; ++i)
-                                       if(hasC(word, black[i])){
-                                               found = 0;
-                                               break;
+                               for(int i = 0; i < bl; ++i){
+                                       if(!hasC(green, black[i]) && !hasC(yellow, black[i])){
+                                               if(hasC(word, black[i])){
+                                                       found = 0;
+                                                       break;
+                                               }
+                                       }else{
+                                               if(black[i] != '.' && !hasC(word, black[i]) || word[i] == black[i]){
+                                                       found = 0;
+                                                       break;
+                                               }
                                        }
+                               }
                        }
                }
 
                        if(print)
                                printf("%s", word);
                }
+               //printf("check\n\n");
        }
 
        fclose(fp);