#include <bits/stdc++.h>
using namespace std;

#define rep(i,x,y) for(int i=(x);i<(y);++i)
#define debug(x) #x << "=" << (x)

#ifdef DEBUG
#define _GLIBCXX_DEBUG
#define dump(x) std::cerr << debug(x) << " (L:" << __LINE__ << ")" << std::endl
#else
#define dump(x)
#endif

typedef long long int ll;
typedef pair<int,int> pii;
//template<typename T> using vec=std::vector<T>;

const int inf=1<<30;
const long long int infll=1LL<<58;
const double eps=1e-9;
const int dx[]={1,0,-1,0},dy[]={0,1,0,-1};

template <typename T> ostream &operator<<(ostream &os, const vector<T> &vec){
	os << "[";
	for (const auto &v : vec) {
		os << v << ",";
	}
	os << "]";
	return os;
}

int x,y,ans,min_res=0;

inline vector<pii> fill_cells(vector<vector<char>>& cells,char color){
    vector<pii> res;
    queue<pii> que;
    que.push(make_pair(0,0));
    char prev_color=cells[0][0];
    cells[0][0]=color;
    while(!que.empty()){
        pii p=que.front();
        que.pop();
        res.push_back(p);
        for(int i=0; i<4; ++i){
            int ny=p.first+dy[i],nx=p.second+dx[i];
            if(ny<0 or y<=ny or nx<0 or x<=nx) continue;
            if(cells[ny][nx]!=prev_color) continue;
            que.push(make_pair(ny,nx));
            cells[ny][nx]=color;
        }
    }

    return move(res);
}

inline void dfs(int num,vector<vector<char>>& cells){
    if(num>min_res) return;
    for(int i=0; i<3; ++i){
        if(num>=ans) return;
        if(cells[0][0]=="BGR"[i]) continue;

        char prev_color=cells[0][0];
        vector<pii> ps=fill_cells(cells,"BGR"[i]);

        if(ps.size()==x*y) ans=num;
        else dfs(num+1,cells);
        for(const pii& p:ps) cells[p.first][p.second]=prev_color;
    }
}

void solve(){
    while(true){
        cin >> x >> y;
        if(x==0 and y==0) break;

        vector<vector<char>> cells(y,vector<char>(x));
        rep(i,0,y) rep(j,0,x) cin >> cells[i][j];

        ans=inf;
        min_res=0;
        while(ans==inf){
            dfs(0,cells);
            ++min_res;
        }

        cout << ans << endl;
    }
}

int main(){
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	solve();
	return 0;
}