#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion var h = I(); var w = I(); var g = new int[h, w]; for (var i = 0; i < h; i++) for (var j = 0; j < w; j++) { g[i, j] ^= I(); } for (var i = 0; i < h - 1; i++) { for (var j = 0; j < w - 1; j++) { if (g[i, j] == 1) { g[i, j] ^= 1; g[i + 1, j] ^= 1; g[i, j + 1] ^= 1; g[i + 1, j + 1] ^= 1; } } } var ic = 0; var jc = 0; var corner = g[h - 1, w - 1]; for (var i = 0; i < h; i++) ic += g[i, w - 1]; for (var j = 0; j < w; j++) jc += g[h - 1, j]; var min = Math.Min(ic, jc); var left = Math.Max(ic, jc) - min; var ans = min + left + (corner + min) % 2; Console.WriteLine(ans);