small optimization on derived patterns
small optimization on derived patterns

An example of changes:

  rise/rising/rose/rises/riser
- rise/-ing/*rose/s/r
+ rise/-ing/ro--/s/r

  bind/binding/bound/binds/binder/bound/binding
- bind/ing/*bound/s/er/*bound/ing
+ bind/ing/bou--/s/er/bou--/ing

  fight/fighting/fought/fights/fighter/fighted/fighting
- fight/ing/*fought/s/er/ed/ing
+ fight/ing/fou--/s/er/ed/ing

  hang/hanging/hung/hangs/hanger/hanged/hanging
- hang/ing/*hung/s/er/ed/ing
+ hang/ing/hu--/s/er/ed/ing

  ride/riding/rode/rides/rider/ridden/riding
- ride/-ing/*rode/s/r/-den/-ing
+ ride/-ing/ro--/s/r/-den/-ing

jakwings/diff-mark