public int countGenerators(String[] fragment, int W, int i0, int j0){
        int n = fragment.length;
        int m = fragment[0].length();
        int result=0;
        for(int l=1; l<=W; l++){
            char[] string = new char[l];
            boolean valid = true;
            int filledCount = 0;
            for(int i=0; i<n; i++){
                if(!valid) break;
                for(int j=0; j<m; j++){
                    int index = (W*i+j)%l;
                    if(string[index]==0){
                        string[index]=fragment[i].charAt(j);
                        filledCount++;
                    } else
                    if(string[index]!=fragment[i].charAt(j)){
                        valid = false;
                        break;
                    }
                }
            }
            if(!valid) continue;
            result = (result+pow(26, l-filledCount))%MOD;
        }
        return result;
    }