store and retrieve array of chars in flash memory

sterretje:
Which is not possible on AVR based Arduinos without modifying the bootloader or other tricks. And flash has an estimated life cycle if 10000 writes.

You may have misunderstood what I meant. I was not suggesting to modify the flash, but to load the strings from flash byte-by-byte and modify the individual bytes in RAM before using them. If OP wanted to be able to combine different strings in different order, he could:

void print_PSTR(byte index)
{
  for (i = 0; i < strlen; i++)
  {
    byte pstr_byte = load_PSTR_BYTE(STR[index][i]);
    //Modify the byte ont-the-fly
    print(pstr_byte);
  }
}

void combine_PSTR(byte index1, byte index2)
{
  print_PSTR(index1);
  print_PSTR(index2);
}

And so on..