So ,the answer to this particular problem is weird , and I couldn't find it in the documentation of the knn algorithm.
The problem was that outputs on knn.Learn part must start with 0 and be counting upwards . Converting capital character to int gave me a minimum of 65 ('A') , I changed the first of the code
outputs[list_counter] = (char.Parse(training_set[list_counter].letter)) -65 ;and now everything runs like clockwork!