Answer (albeit a bit late):
Yes.
Method:
Working backwards is often a good idea when dealing with mathematical puzzles. Starting with the goal string,
bacaccacacccc
the only possible operation previous to this is "aa" -> "ac", as there are no occurences of "aa" in it. We reverse the operation a step.
bacaccacacccc
baaaacaaaaccc
The step previous to this could not have used to "aa"->"ac" operation, since that would have removed all the "aa" we see in this string. Therefore, we reverse the "a"->"aa" operation.
baaaacaaaaccc
baacaaccc
The step previous to this could not have used "aa"->"ac", because that would have turned the first instance of "aa" in the string into ac, but we're left with a leading "aa". Therefore, we reverse the "a"->"aa" operation again.
baacaaccc
bacaccc
The "a"->"aa" operation would not have been available to us in the operation previous to this, making "aa"->"ac" the only possible operation. We reverse said operation.
bacaccc
baaaacc
Following the reason previously used, "aa"->"ac" wasn't used in the previous step since we have "aa" still occurring. Reverse "a"->"aa".
baaaacc
baacc
Again, "aa"->"ac" wouldn't have left us with this state, so we reverse "a"->"aa".
baacc
bacc
Only "aa"->"ac" could have been used to produce this. Reverse it.
bacc
baac
Since we have a leading "aa", "aa"->"ac" wasn't used. Reverse "a"->"aa".
baac
bac
The available operation is obvious; apply it.
bac
baa
And that's problem solved.
The answer is a bit lengthy, but I hope the explanation adds something. I'll also mention a general rule that was only briefly touched in the answer:
If we ever use "aa"->"ac", the "aa"->"ac" operation will never be available directly after; you always need "a"->"aa" after it.
E.g. baaa -> baca
Since we search from the left and the second "a" is changed, there are never instances where the unchanged "a" has another "a" next to it. In an odd-numbered "a" sequence, the final "a" remains unchanged next to a "c".