Print the AdamN tile Adam7 is an interlacing algorithm for raster images, such as PNG. It is called the &quot;Adam7&quot; algorithm because it was invented by Adam M. Costello, and it is generated by following a certain pattern 7 times. One of the cool things about the Adam7 algorithm that makes it really fun for code golf, is that the pattern can be repeated an arbitrary number of times, as long as it's odd. Back when 1996 when the PNG standard was developed, using only 7 iterations was seen as sufficient, since the 9 iterations was too complex, and 5 iterations is not as efficient.
Here is the first iteration of the tile:
a

Pretty simple. This is an &quot;Adam1&quot; tile. Here's how we get to the next iteration, the &quot;Adam3&quot; tile.
Since our last tile was 1x1, we double the height and width, and the next one will be 2x2. First, we start with an 'a' in the upper left corner.
a-
--

Step 2, copy this pattern to the right, and increase the letter we're on by one.
ab
--

Step 3, same as step 2, but copy down instead of right.
ab
cc

Boom. The &quot;Adam3&quot; tile. Let's do the &quot;Adam5&quot; also, so you can actually see how the algorithm works. This tile will, again, be twice as large, so 4x4. Again, we start with a a in the upper left corner:
a---
----
----
----

Double this pattern, increase the letter, and move it to the right:
a-b-
----
----
----

Again, this time down.
a-b-
----
c-c-
----

Again, this time to the right.
adbd
----
cdcd
----

Again, this time down.
adbd
eeee
cdcd
eeee

This is the &quot;Adam5&quot; tile. Here is the ASCII representation of the Adam7 tile:
afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg

And while we're at it, here is a fun animation of each step of the Adam7 tile (although it does several tiles side by side):

The challenge
Given a positive odd number N, output the &quot;AdamN&quot; tile. You can use any default method of IO. Since we're using the alphabet in lieu of numbers, you only need to handle inputs up to 25. You can choose to output lower-case or upper-case characters as long as you specify and it's consistent.
Sample IO
1:
a

3:
ab
cc

5:
adbd
eeee
cdcd
eeee

7:
afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg

9:
ahfhdhfhbhfhdhfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
ehfhehfhehfhehfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
chfhdhfhchfhdhfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
ehfhehfhehfhehfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii

As usual, this is code-golf, so standard loopholes apply, and shortest answer in bytes wins!
CJam, 20 bytes

Laq~{'a+_@f*\f+z}/N*


Try it online.

La                      Push [[]]
  q~                    Push input n
    {           }/      For i in 0..n-1 ...
     'a+                  Add to char 'a to give current char
        _@f*              Join each row by char
            \f+           Add char to the end of each row as well
               z          Zip to transpose
                  N*    Join result by newlines


20/21-byte alternatives:

Laaq~{'a+aff+:sz}/N*
Laaq~{'a+\Laf+f*z}/N*
Laq~{'a+f{_@*\+}z}/N*