Given an m x n grid of characters where '1' represents land and '0' represents water, count how many connected land regions exist. Two cells are connected if they share a side (up, down, left, right). Part A: implement a function countIslands(grid) using any approach. Part B: re-implement it using an explicit breadth-first search (no recursion). Handle edge cases such as an empty grid, single-cell grids, very large grids, and scenarios where land cells touch only at corners (treat them as separate regions). Analyze the time and space complexity of both approaches, and briefly describe how the solution would change if diagonal adjacency were also considered.