import math import sys from typing import List, Tuple def int1(x: str, /): return int(x) - 1 def input(): return sys.stdin.readline().rstrip('\n') def dbg(*args, **kwargs): print(*(repr(arg) for arg in args), *(f'{k}: {repr(v)}' for k, v in kwargs.items()), sep='; ', file=sys.stderr) def main(): n, m = map(int, input().split()) s = '$' + input() t = '$' + input() d = [[math.inf] * (m + 1) for _ in range(n + 1)] d[0][0] = 0 for i in range(n+1): for j in range(m+1): if i > 0: d[i][j] = min(d[i][j], d[i - 1][j] + 1) if j > 0: d[i][j] = min(d[i][j], d[i][j - 1] + 1) if i > 0 and j > 0: d[i][j] = min(d[i][j], d[i - 1][j - 1] + (1 if s[i] != t[j] else 0)) return d[-1][-1] def _start(): ret = main() if ret is not None: if isinstance(ret, List) or isinstance(ret, Tuple): print(*ret) else: print(ret) if __name__ == '__main__': _start()