I want to take out words that reoccur in array1 and put them in array3.
(so in array 3 there would be only distinct values)
the problem is.. i dont understand how the count2 value can reach so high. (over 300) but should be 20 maximum.

for(i=0; i<count;i++){
             if(count2==0){
                   //put the first value in array3
                   strcpy(array3[0], array1[0]); 
                   count2++;             
             }
             else{
                   for(j=0;j<count2;j++){
                      //if they are same
                      if(strncmp(array1[i], array3[j], 3)==0){
                         
                      }
                      else{
                          //different
                           strcpy(array3[count2], array1[i]);
                           count2=count2+1;
                      }                  
                  }
                  
             }
            
           
    }

Because every time a word from array1 does not match a word int array3, it's added to array3.

So, if you have 4 words in array3, and the current word in array1 matches none of the words, the word will be added 4 times to array3. You now have 8 words in the array.

Look closer at how your loop and IF statements works. You only want to add the word after you've looked at all the words in array3