#include <iostream>
#include <vector>
#include <string>
#include <queue>
using namespace std;

long long int cnt_v[502][502] = {};
long long int cnt_s[502][502] = {};

bool f[503][503] = {};

int main() {

  long long int w, h, n;
  cin >> w >> h >> n;

  long long int x0, y0, x1, y1;
  cin >> x0 >> y0 >> x1 >> y1;

  vector< long long int > vx, vy, t;
  vector< vector< long long int > > s;

  for ( long long int i = 0; i < n; i++ ) {

    long long int inx, iny;
    cin >> inx >> iny;
    vx.push_back( inx );
    vy.push_back( iny );

    long long int in_t;
    cin >> in_t;
    t.push_back( in_t );

    string ins;
    cin >> ins;

    vector< long long int > v;

    for ( long long int j = 0; j < ins.size(); j++ ) {
      if ( ins[j] == 'U' ) {
	v.push_back( 0 );
      }else if ( ins[j] == 'D' ) {
	v.push_back( 1 );
      }else if ( ins[j] == 'L' ) {
	v.push_back( 2 );
      }else if ( ins[j] == 'R' ) {
	v.push_back( 3 );
      }
    }
    s.push_back( v );

  }

  for ( long long int i = 0; i < n; i++ ) {

    long long int x = vx[i];
    long long int y = vy[i];

    for ( long long int j = 0; j < t[i]; j++ ) {

      for ( long long int k = 0; k < s[i].size(); k++ ) {

	if ( s[i][k] <= 1 ) {
	  if ( s[i][k] == 0 ) {
	    if ( y > 0 ) {
	      cnt_v[ x ][ y ]++;
	      y--;
	    }
	  }else {
	    if ( y < h - 1 ) {
	      cnt_v[ x ][ y + 1 ]++;
	      y++;
	    }
	  }
	}else {
	  if ( s[i][k] == 2 ) {
	    if ( x > 0 ) {
	      cnt_s[ x ][ y ]++;
	      x--;
	    }
	  }else {
	    if ( x < w - 1 ) {
	      cnt_s[ x + 1 ][ y ]++;
	      x++;
	    }
	  }
	}
      }

    }

  }

  /*
  cout << cnt_v[0][0] << " " << cnt_v[1][0] << " " << cnt_v[2][0] << " " << cnt_v[3][0] << endl;
  cout << " " << cnt_s[1][0] << " " << cnt_s[2][0] << " " << cnt_s[3][0] << endl;
  cout << cnt_v[0][1] << " " << cnt_v[1][1] << " " << cnt_v[2][1] << " " << cnt_v[3][1] << endl;
  cout << " " << cnt_s[1][1] << " " << cnt_s[2][1] << " " << cnt_s[3][1] << endl;
  cout << cnt_v[0][2] << " " << cnt_v[1][2] << " " << cnt_v[2][2] << " " << cnt_v[3][2] << endl;
  cout << " " << cnt_s[1][2] << " " << cnt_s[2][2] << " " << cnt_s[3][2] << endl;
  cout << cnt_v[0][3] << " " << cnt_v[1][3] << " " << cnt_v[2][3] << " " << cnt_v[3][3] << endl;
  cout << " " << cnt_s[1][3] << " " << cnt_s[2][3] << " " << cnt_s[3][3] << endl;
  */

  priority_queue< pair< long long int, pair< long long int, long long int > > > q;

  q.push( make_pair( 0, make_pair( x0, y0 ) ) );

  while( q.size() > 0 ) {

    long long int k = -q.top().first;
    long long int x = q.top().second.first;
    long long int y = q.top().second.second;

    q.pop();
    if ( f[x][y] == true ) continue;
    f[x][y] = true;

    if ( x == x1 && y == y1 ) {
      cout << k << endl;
      break;
    }

    if ( x > 0 && f[x-1][y] == false ) q.push( make_pair( -(k + cnt_v[x-1][y] ), make_pair( x-1, y ) ) );
    if ( x < w && f[x+1][y] == false ) q.push( make_pair( -(k + cnt_v[x][y] ), make_pair( x+1, y ) ) );
    if ( y > 0 && f[x][y-1] == false ) q.push( make_pair( -(k + cnt_s[x][y-1] ), make_pair( x, y-1 ) ) );
    if ( y < h && f[x][y+1] == false ) q.push( make_pair( -(k + cnt_s[x][y] ), make_pair( x, y+1 ) ) );

  }

  return 0;

}

Measured memory_bytes: 18152