Вопрос: Как найти все комбинации символов?

Лучший ответ:
Такие матрицы, судя по всему, описывают возможные бинарные операции на множестве {'a','b','c'}, т.е. функции от двух переменных из этого множества, принимающие значения в этом же множестве.
Всего таких функций будет 3^9=19683. Поэтому достаточно перебрать числа от 0 до 3^9-1, и троичную запись каждого из них превратить в матрицу. На C# это бы выглядело так:char[,] matr=new char[3,3];
    for(int i=0;i<19683;i++){
        int a=i;
        for(int j=9;--j>=0;){
            matr[j/3,j%3]=(char)('a'+a%3);
            a/=3;
        }
        Process(matr);
    }

Худший ответ:
Извините, я пьян.
I am C'man in Python world.#!/usr/bin/python                                                                                                                                              
                                                                                                                                                               
s = ['a','a','a','a','a','a','a','a','a']                                                                                                                      
print s                                                                                                                                                        
                                                                                                                                                               
def plus(s):                                                                                                                                                   
    i = -1                                                                                                                                                     
    cf = 1                                                                                                                                                     
    while cf == 1:                                                                                                                                             
        if (s[i] == 'a'):                                                                                                                                      
            cf = 0                                                                                                                                             
            s[i] = 'b'                                                                                                                                         
        elif s[i] == 'b':                                                                                                                                      
            cf = 0                                                                                                                                             
            s[i] = 'c'                                                                                                                                         
        elif (s[i] == 'c'):                                                                                                                                    
            cf = 1                                                                                                                                             
            s[i] = 'a'                                                                                                                                         
                                                                                                                                                               
        i -= 1                                                                                                                                                 
                                                                                                                                                               
while s != ['c','c','c','c','c','c','c','c','c']:                                                                                                              
    plus(s)                                                                                                                                                    
    print s