'use strict';
const input = require('fs').readFileSync('/dev/stdin', 'utf8').trim().split('\n');
const info = input.splice('\n');
const N = info[0].split(' ')[0];
const M = info[0].split(' ')[1];
const As = info.splice(1 , N);
const Bs = info.splice(1 , M);
let isMatch = "";

// 4重for文でぶん回していく
for(let ax = 0; ax < N - M + 1; ax++){
  for(let ay = 0; ay < N - M + 1; ay++){
    // マッチするかのフラグを用意
    isMatch = true;
   	// ループぬけ用のラベル
    // labelは繰り返しの手前につけないといけないらしい
    loopReset:
    // 小さい方の四角形の1つずつ吟味するfor文
    for(let bx = 0; bx < M; bx++){
	  for(let by = 0; by < M; by++){
        if(As[ax + bx][ay + by] == Bs[bx][by]){
        	continue;
        } else {
        	isMatch = false;
            break loopReset;
        }
      }
    }
    if(isMatch){
    	console.log("Yes");
      	return;
    }
  }
}
console.log("No");


