IOI '03 - Kenosha, Wisconsin, USA

Comparing Code

Racine Business Networks (RBN) has taken the Heuristic Algorithm Languages (HAL) company to court, claiming that HAL has taken source code from RBN UNIX™ and contributed it to the open-source operating system HALnix.

RBN and HAL both use a programming language with one statement per line, each of the form: STOREA = STOREB + STOREC where STOREA, STOREB, and STOREC are variable names. In particular, the first variable name starts in the first column and is followed by a space, an equals sign, a space, a second variable name, a space, the addition symbol, a space, and a third variable name. The same variable name might appear more than one time on a single line. Variable names consist of 1…8 uppercase ASCII letters ('A'…'Z').

RBN claims that HAL copied a consecutive sequence of lines directly from RBN's source code, making only minor modifications:

  • RBN claims that HAL changed some of the variable names in order to disguise their crime. That is, HAL took a series of lines from RBN's program and, for each variable in it, changed all occurrences of that variable to a new variable name, although the new variable name might be the same as the original. Of course, no two variables were changed to the same new variable name.
  • RBN also claims HAL might have changed the order of the right-hand side of some lines: STOREA = STOREB + STOREC might have been changed to STOREA = STOREC + STOREB.
  • RBN claims that HAL did not change the order of the lines of RBN's source code.

Given source code for programs from RBN and HAL, find the longest consecutive sequence of lines from HAL's program that could have come from a consecutive sequence of lines from RBN's program using the modifications above. Note that the sequences of lines from the two programs do not have to start at the same line number in both files.

Input

  • The first line of input contains two space-separated integers, R and H (1 ≤ R ≤ 1000; 1 ≤ H ≤ 1000). R is the number of lines of source code in RBN's program; H is the number of lines of source code in HAL's program.
  • The next R lines contain RBN's program.
  • The next H lines contain HAL's program.

Output

The output file should contain a single line with a single integer that is the length of the longest consecutive sequence of lines that HAL might have copied from RBN and transformed.

Sample Input

4 3
RA = RB + RC
RC = D + RE
RF = RF + RJ
RE = RF + RF
HD = HE + HF
HM = HN + D
HN = HA + HB

Sample Output

2

Lines 1-2 of RBN's program are the same as lines 2-3 of HAL's program, if the following variable name substitutions are performed on RBN's program: RA → HM, RB → D, RC → HN, D → HA, RE → HB. There is no matching with three or more lines.

All Submissions
Best Solutions


Point Value: 25 (partial)
Time Limit: 2.00s
Memory Limit: 64M
Added: Jun 22, 2010

Languages Allowed:
C++03, PAS, C, HASK, ASM, RUBY, PYTH2, JAVA, PHP, SCM, CAML, PERL, C#, C++11, PYTH3

Comments (Search)

It's quiet in here...